programing

ASP.NET MVC를 사용하여 마스터 페이지에서 스크립트 사용

newsource 2023. 6. 9. 22:04

ASP.NET MVC를 사용하여 마스터 페이지에서 스크립트 사용

ASP.NET MVC는 처음이라 대본이 좀...특히, 저는 대부분의 페이지에서 jQuery를 사용하고 싶기 때문에 마스터 페이지에 넣는 것이 타당합니다.하지만, 만약 내가 한다면, (내 것으로부터).~/Views/Shared/Site.Master):

<script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script>

그런 다음 문자 그대로 고객에게 전달됩니다. 물론 현재 경로가 올바른 수준의 수를 가질 경우에만 작동합니다.시작~/Scripts/...작동하지 않습니다.시작/Scripts/...프로젝트가 사이트 루트에 있는 경우에만 작동합니다(이를 가정하고 싶지 않음).

한 가지 실무적인 접근법이 있습니다(아래에 게시하겠습니다). 하지만: 제가 뭔가를 놓쳤나요?

ASP.NET MVC 모델의 단순성을 무너뜨리는 것처럼 보이므로 스크립트 관리자를 참여시키지 않는 것이 좋습니다.아니면 제가 너무 걱정하고 있나요?

다음은 사소한 가상화에도 효과적인 운영 방법입니다. 하지만 너무 복잡해 보입니다.

<script src="<%=Url.Content("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>

AppHelper 클래스에는 스크립트 참조를 추가하는 몇 가지 방법이 있습니다.

public static string ReferenceScript(string scriptFile)
{
    var filePath = VirtualPathUtility.ToAbsolute("~/Scripts/" + scriptFile);
    return "<script type=\"text/javascript\" src=\"" + filePath + "\"></script>";
}

마스터 페이지에서 다음을 사용할 수 있습니다.

<%= AppHelper.ReferenceScript("jquery-1.2.6.js") %>

제 생각에 가장 간단한 방법은 다음과 같은 것을 사용하는 것이고, 그것은 다음과 같은 관점에서 작동합니다.

<script type="text/javascript" src="<%=ResolveUrl("~/Scripts/myscript.js") %>">

</script>

다른 답변에 따르면 에두아르도의 답변과 유사한 Html(MVC의 경우 매우 일반적임)의 확장 방법일 수 있습니다.

 <%=Html.Script("~/Scripts/jquery-1.2.6.js")%>

포함:

public static string Script(this HtmlHelper html, string path)
{
    var filePath = VirtualPathUtility.ToAbsolute(path);
    return "<script type=\"text/javascript\" src=\"" + filePath + "\"></script>";
}

구글의 js 파일 호스팅에서 당신의 마스터 페이지를 가리키는 것은 어떻습니까?그러면 사이트가 Netfacing이라고 가정할 때도 사전 캐시된 jquery 파일을 악용할 수 있습니까?

OJ가 언급한 것 중 일부를 만들었습니다. 이 방법으로 Google 도우미 클래스를 만들었습니다.

public static string ReferenceGoogleAPI()
{
    var appSettings = new AppSettingsReader();
    string apiKey = appSettings.GetValue("GoogleApiKey", typeof(string)).ToString();
    return ReferenceGoogleAPI(apiKey);
}

public static string ReferenceGoogleAPI(string key)
{
    return "<script type=\"text/javascript\" src=\"http://www.google.com/jsapi?key=" + key + "\"></script>";
}

public static string ReferenceGoogleLibrary(string name, string version)
{
    return "<script type=\"text/javascript\">google.load(\"" + name + "\", \"" + version + "\");</script>";
}

이제 ClientLocation 데이터를 얻기 위해 추가 방법을 추가하고 있습니다. ;)

회사에서는 ASP 코드 뒤에 있는 다음과 같은 작업을 수행하고 있습니다.

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  Const jQuery As String = "jQuery"

  With Me.Page.ClientScript
    If Not .IsClientScriptIncludeRegistered(jQuery) Then
      .RegisterClientScriptInclude(jQuery, VirtualPathUtility.ToAbsolute("~/Includes/jQuery-1.2.6.js"))
    End If
  End With
End Sub

ASP.NET MVC로 가능한지 모르겠습니다.

ResolveUrl은 가장 우아한 솔루션 IMO입니다.CSS에 대한 URL이 스크립트가 아닌 run at=server에 의해 해결되는 것은 매우 유감스러운 일입니다.

찌그러뜨리는 것과 같은 유틸리티를 사용하는 것을 살펴봐야 합니다.그것은 당신을 위해 당신의 모든 css와 js 파일을 통합하고 난독화할 수 있습니다.또는 ForceDebug()를 사용하여 디버그에 더 보관하는 경우 스크립트 태그를 생성하는 데 사용할 수 있습니다.

http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher

슬래시(/)만 사용합니다.예:

<script src="/Script/jquery-1.4.1.js"></script>

"jquery-1.4.1.js" 파일이 루트의 스크립트 디렉터리에 있는 경우.그리고 완벽하게 작동합니다.

NAT 애플리케이션은 가상 디렉토리를 사용하여 구현되며, 여기에 언급된 다른 답변과 관련하여 몇 가지 문제가 있었습니다(경로를 올바르게 해결하지 못함).잘 작동한 한 가지 방법은 (당신에게 유일한 가지 방법만 사용하는 것은 아닙니다.

<script src="<%=Request.ApplicationPath%>/Web/AppName/JavaScript/jquery-1.4.1.js"></script>

Url을 시도할 수 있습니다.Razor 구문을 사용한 컨텐츠 확장 방법

<script src="@Url.Content("~/Scripts/jquery.min.js")" type="text/javascript"></script>

언급URL : https://stackoverflow.com/questions/347528/using-scripts-in-a-master-page-with-asp-net-mvc