在ASP.NET MVC中引用Javascript的正确方法是什么?使用类似../../Scripts/Myscript.js的东西似乎适用于传统{controller} / {action} / {id}的路由,但对于比这更复杂或更复杂的东西更脆弱。更值得关注的是,理性绝对引用(/Scripts/Myscript.js)在Visual Studio中打破了Intellisense。
你是如何处理的?
编辑:这显然是一个非常古老的问题,但我正在编辑提到在MVC4中,你只需要这样:src="~/Scripts/Whatever.js"
这足以让Razor使用根路径找出你的意思。
答案 0 :(得分:19)
<script src="<%= Url.Content("~/Scripts/Myscript.js") %>" type="text/javascript"></script>
答案 1 :(得分:18)
如果其他人发现这个使用MVC Razor的答案,请参考以下语法:
<script type="text/javascript" src="@Url.Content("/Scripts/MyScript.js")"></script>
答案 2 :(得分:4)
我也像CMerat一样引用js:
<script type="text/javascript" src="<% =Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"></script>
如果你需要用于jquery的Intellisense,你可以找到instructions on how to set it up here。据我所知,你无法获得你引用的任何自定义js文件的Intellisense - 你需要先为它创建Intellisense文件。
答案 3 :(得分:1)
我自己现在使用mvccontrib htmlhelpers。
This也很有用。
答案 4 :(得分:0)
我创建了自己的HtmlHelper扩展,如下所示:
public static string MEScriptBlock(this HtmlHelper html, string path, string releasePath)
{
#if DEBUG
#else
if (!string.IsNullOrEmpty(releasePath))
path = releasePath;
#endif
return string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>\r\n",
path);
}
如果智能感知是你所能追求的,你可以欺骗VS认为已经加载了一个JS文件......例如
<% if (false)
{ %>
<script src="../../Scripts/Myscript.js" type="text/javascript"></script>
<% } %>
HTHS, 查尔斯