在ASP.NET MVC中引用Javascript的正确方法?
在ASP.NET MVC中引用Javascript的正确方法是什么?对于传统的{controller}/{action}/{id}路由,使用.././Scripts/Myscript.js之类的东西似乎可以很好地工作,但对于任何比这复杂或不复杂的路由,它们都更脆弱。更令人担忧的是rational绝对引用(/Scripts/Myscript.js)破坏了VisualStudio中的Intellisense 你是怎么处理的 编辑:在这一点上,这显然是一个非常古老的问题,但我在编辑时要提到的是,在MVC4中,您只需要以下内容:在ASP.NET MVC中引用Javascript的正确方法?,asp.net,javascript,asp.net-mvc,Asp.net,Javascript,Asp.net Mvc,在ASP.NET MVC中引用Javascript的正确方法是什么?对于传统的{controller}/{action}/{id}路由,使用.././Scripts/Myscript.js之类的东西似乎可以很好地工作,但对于任何比这复杂或不复杂的路由,它们都更脆弱。更令人担忧的是rational绝对引用(/Scripts/Myscript.js)破坏了VisualStudio中的Intellisense 你是怎么处理的 编辑:在这一点上,这显然是一个非常古老的问题,但我在编辑时要提到的是,在MV
src="~/Scripts/Whatever.js"
这就足够Razor使用根路径找出您的意思了。
我也以与CMerat相同的方式引用js:
<script type="text/javascript" src="<% =Url.Content("~/Scripts/jquery-1.3.2.min.js") %>"></script>
如果您需要jquery的Intellisense,您可以找到。据我所知,您无法为引用的任何自定义js文件获取Intellisense-您需要先为其创建Intellisense文件。目前我自己使用mvccontrib htmlhelpers
也可能有用。我已经创建了自己的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);
}
publicstaticstringmescriptblock(此HTMLHelperHTML、字符串路径、字符串释放路径)
{
#如果调试
#否则
如果(!string.IsNullOrEmpty(releasePath))
路径=释放路径;
#恩迪夫
返回字符串。格式(“\r\n”,
路径);
}
如果intellisense是您所追求的,那么您可能会欺骗VS,使其认为已加载JS文件。。。例如
<% if (false)
{ %>
<script src="../../Scripts/Myscript.js" type="text/javascript"></script>
<% } %>
嗯,,
Charles如果其他人发现这个答案使用的是MVC Razor,下面是它的语法:
<script type="text/javascript" src="@Url.Content("/Scripts/MyScript.js")"></script>
我知道Scott的指示,但我从这些回答中得到的是,除了使用ScriptManager之外,无法正确引用脚本并让Intellisense为支持它的文件(如jQuery)工作。这是有道理的。。因为auto intellisense(如果你想这样称呼它的话)只在页面中可以看到的脚本之外。由于您的脚本“链接”,它绑定得很晚,因此IDE在设计时不知道它的内容。在MVC4中,您所需要的只是src=“~/Scripts/Myscript.js”,Razor会解决这个问题。