gpt4 book ai didi

javascript - 在 ASP.NET MVC View 中包含脚本引用的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-01 17:57:29 29 4
gpt4 key购买 nike

如您所知,ASP.NET MVC 将 View 标记存储在 Views 目录中,该目录在层次结构上与 ASP.NET MVC Web 应用程序中使用的 URL 路由不兼容。另一方面,在 ASP.NET Web 窗体(以及 ASP.NET MVC 中)中,URL 可以并且通常确实具有嵌套的“目录”,或者更确切地说是路径分隔符,并且这与 Web 应用程序通常不具有嵌套的“目录”这一事实相结合。托管在 URL 的根路径中,而不是在子目录中,即“/stuff/here/MyActualApp”,因此有必要使用相对于应用程序根目录而不是相对于 URL 根目录的脚本路径。然而,与此同时,Visual Studio 脚本智能感知指示 URL 相对于正在编辑的文件进行映射。

此外,我在使用 runat="server"来虚拟化根路径以支持“~/”时遇到了很多问题,例如 head 标签也需要 runat="server",而这个引入了各种其他约束。

最后,还有一件事:如果除了智能感知就绪风格之外还引用了像 jQuery 这样的脚本的缩小风格,Visual Studio 将会犹豫不决。所以你几乎必须使用转义代码来防止 VS 犹豫不决。

因此,自 VS 2005 以来,我一直在 Visual Studio 2010 中使用此语法或其变体,以便在 ASP.NET View 标记中包含脚本,以处理 ASP.NET MVC View 文件的嵌套文件夹差异(其中与实际的 URL 不相符),并且需要使用 jQuery 的 vsdoc 风格而不是缩小版本,以便我可以进行智能感知。

<%if (false) { %>
<script src="../../Scripts/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
<% } %>
<%= "<script type=\"text/javascript\"" src=\""
+ ResolveUrl("~/Scripts/jquery-1.4.1.min.js") + "\"></script>"%>

除了使用 CDN URL,还有比这更好的方法吗?它很丑。我希望微软现在就可以解决这个问题,而无需诉诸 ScriptManager 标签(这需要服务器端表单并使标记更加冗长)。

注意:我的问题不在于智能感知支持,而在于上面代码中的最后一行,必须发出一行而不是仅仅使用真正的标记。不过,我也希望智能感知支持做好准备。

最佳答案

我们使用SquishIt 。它还组合并缩小了文件,并支持 css(甚至 dotLess )。

<head>
<%= Bundle.Css()
.Add("~/media/css/style.less")
.Add("~/media/css/print.css")
.Add("~/media/css/media.css")
.Render("~/media/css/styles_#.css") %>
<%= Bundle.JavaScript()
.Add("~/media/js/jquery-1.4.3.js")
.Add("~/media/js/jquery.equalHeights.js")
.Add("~/media/js/jquery.cycle.lite.1.0.js")
.Add("~/media/js/swfobject-2.2.js")
.Add("~/media/js/site.js")
.Render("~/media/js/js_#.js") %>
</head>

T4MVC还可以提供一种引用 URL 的方法:

<script src="<%= Links.Scripts.Map_js %>" type="text/javascript"></script>

关于javascript - 在 ASP.NET MVC View 中包含脚本引用的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4328373/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com