Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET MVC中引用Javascript的正确方法?_Asp.net_Javascript_Asp.net Mvc - Fatal编程技术网

在ASP.NET MVC中引用Javascript的正确方法?

在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

在ASP.NET MVC中引用Javascript的正确方法是什么?对于传统的{controller}/{action}/{id}路由,使用.././Scripts/Myscript.js之类的东西似乎可以很好地工作,但对于任何比这复杂或不复杂的路由,它们都更脆弱。更令人担忧的是rational绝对引用(/Scripts/Myscript.js)破坏了VisualStudio中的Intellisense

你是怎么处理的

编辑:在这一点上,这显然是一个非常古老的问题,但我在编辑时要提到的是,在MVC4中,您只需要以下内容:

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会解决这个问题。