添加额外的url参数会导致jquery错误

时间:2010-10-05 08:30:41

标签: asp.net-mvc

简介

我正在开发一个MVC.Net项目。我刚刚启动了一个带有Home Controller和Index动作的默认网站。我使用'Home/Index/1'浏览到视图,并且每个工作都正常。

现在我想添加一个额外的url参数,所以我更改了我的global.asax并添加了一个foo参数:

routes.MapRoute(
   "Default", // Route name
   "{controller}/{action}/{id}/{foo}", // URL with parameters
   new {controller = "Home", action = "Index", id = UrlParameter.Optional, foo = UrlParameter.Optional} // Parameter defaults
);

在页面上我也有一点点jquery。例如这个脚本:

<script type="text/javascript">
   $(document).ready(
      function ()
      {
      });
</script>

问题

但现在当我使用'Home / Index / 1/1'浏览我的页面时,我收到一个javascript错误:

Microsoft JScript运行时错误:预期的对象

当我浏览到'Home/Index/1'的页面时,一切正常。可能我的网址路由有问题,但我不知道我做错了什么。

2 个答案:

答案 0 :(得分:1)

您还可以使用以下语法强制解析路径

&lt; script src =“&lt;%:Url.Content(”〜/ Scripts / jquery-1.4.1.js“)%&gt;”类型= “文本/ JavaScript的” &GT;

答案 1 :(得分:0)

问题的原因是您的脚本源位置。我假设您的脚本源是../../Scripts/jquery.js,当您在页面中附加js文件时,应用程序始终会创建这个源代码。

解释

js file mapped in `../../Scripts/jquery.js`
Page is `Home/Index/1/1` 
js real content is placed in `/Scripts`
when the parser looks for the js it looks in `/Home/Scripts`
which is not where it where it is. Since ../.. = /Home in Home/Index/1/1

我的建议是

<%
string baseUrl = "http://" + Request.Url.Host + (Request.Url.Port != 80 ? ":" + Request.Url.Port.ToString() : "");
$>
<script type="text/javascript" language="javascript" src="<%=baseUrl %>/Scripts/jquery-1.4.1.js"></script>

这也适用于页面中包含的CSS文件。但是对于CSS链接,您不会将"放在href标记的<link>属性中

here

中的答案相关