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

时间:2009-06-02 03:15:20

标签: asp.net javascript asp.net-mvc

在ASP.NET MVC中引用Javascript的正确方法是什么?使用类似../../Scripts/Myscript.js的东西似乎适用于传统{controller} / {action} / {id}的路由,但对于比这更复杂或更复杂的东西更脆弱。更值得关注的是,理性绝对引用(/Scripts/Myscript.js)在Visual Studio中打破了Intellisense。

你是如何处理的?

编辑:这显然是一个非常古老的问题,但我正在编辑提到在MVC4中,你只需要这样:

src="~/Scripts/Whatever.js"

这足以让Razor使用根路径找出你的意思。

5 个答案:

答案 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, 查尔斯