문제
ASP.net mvc 사이트의 마스터 페이지 작업을 시작했는데 질문이 하나 있습니다.마스터 페이지의 스타일시트에 링크하면 시트 경로가 올바르게 업데이트되는 것 같습니다.그게 내가 가진 코드에 있어요
<link href="../../Content/Site.css" rel="stylesheet" type="text/css" />
하지만 페이지가 브라우저에 제공되면 소스를 보면
<link href="Content/Site.css" rel="stylesheet" type="text/css" />
완벽해요.그러나 동일한 경로 변환이 스크립트 파일에서는 작동하지 않는 것 같습니다.
<script src="../../Content/menu.js" type="text/javascript"></script>
그냥 똑같이 나옵니다.여전히 최상위 페이지에서 작동하는 것 같지만 브라우저/웹 서버가 내 오류를 수정하는 것 같습니다.src 경로도 글로브로 만들 수 있는 방법이 있나요?
해결책
<script src="<%= ResolveClientUrl("~/Content/menu.js") %>" type="text/javascript"></script>
다른 팁
확장 방법을 만듭니다.방법은 다음과 같습니다.
public static string ResolveUrl(this HtmlHelper helper, string virtualUrl)
{
HttpContextBase ctx = helper.ViewContext.HttpContext;
string result = virtualUrl;
if (virtualUrl.StartsWith("~/"))
{
virtualUrl = virtualUrl.Remove(0, 2);
//get the site root
string siteRoot = ctx.Request.ApplicationPath;
if (!siteRoot.EndsWith("/"))
siteRoot += "/";
result = siteRoot + virtualUrl;
}
return result;
}
그런 다음 다음과 같이 스크립트 참조를 작성할 수 있습니다.
<script type="text/javascript" src="<%= Html.ResolveUrl("~/Content/menu.js")%>"></script>
대신 이것을 사용하십시오:
<link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
또는 페이지의 HEAD 섹션에서 BASE 태그를 사용할 수 있습니다.그러면 모든 링크는 "base" 태그에 입력된 위치에 상대적이므로 "../../" 및 "~" 항목을 사용할 필요가 없습니다.링크가 CSS 파일의 위치를 기준으로 하는 CSS 파일(배경 URL 등)의 링크는 제외됩니다.
제휴하지 않습니다 StackOverflow