【问题标题】:Adding extra url parameter causes jquery error添加额外的url参数会导致jquery错误
【发布时间】:2010-10-05 21:13:04
【问题描述】:

简介

我正在使用 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' 的页面时,一切正常。可能我的 url 路由有问题,但我不知道我做错了什么。

【问题讨论】:

  • 您可以编辑您的问题并包含查看代码吗?这可能会有所帮助。

标签: asp.net-mvc


【解决方案1】:

也可以使用下面的语法来强制解析路径

【讨论】:

  • Url.Content("~/Foldername/Filename") 在包含所有类型的内容和脚本时始终是一个很好的做法。
【解决方案2】:

问题的原因是您的脚本源位置。我假设你的脚本源是../../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 链接,您不要将 " 放在 &lt;link&gt; 标签的 href 属性中

与我在here的回答有关

【讨论】:

  • 感谢您的快速回复!这就是解决方案。
猜你喜欢
  • 2014-01-14
  • 2018-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
  • 2013-10-26
  • 1970-01-01
  • 2018-07-20
相关资源
最近更新 更多