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
'programing' 카테고리의 다른 글
분석을 위해 Firebase 사용자 지정 이벤트를 추가하는 방법은 무엇입니까? (0) | 2023.06.09 |
---|---|
MariaDB에서 TLS를 사용하도록 설정하지만 TLS가 없는 연결은 계속 허용 (0) | 2023.06.09 |
.NET Core에서 ADO.NET을 사용할 수 있습니까? (0) | 2023.06.09 |
*nix select 및 exceptfds/errorfds semantic (0) | 2023.06.09 |
파일 또는 어셈블리 '시스템'을 로드할 수 없습니다.보안.주요한.윈도우' (0) | 2023.06.09 |