문제

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 등)의 링크는 제외됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top