【问题标题】:Can .net mvc routing cause JavaScript errors?.net mvc 路由会导致 JavaScript 错误吗?
【发布时间】:2010-08-16 06:54:54
【问题描述】:

我在使用 asp.net mvc2 的路由基础设施时遇到了很多麻烦。我在 global.asax 文件中注册了以下路线

routes.MapRoute(
              "strict",
              "{controller}.mvc/{docid}/{action}/{id}",
              new { action = "Index", id = "", docid = "" },
              new { docid = @"\d+"}

            );
 routes.MapRoute(
              "default",
              "{controller}.mvc/{action}/{id}",
              new { action = "Index", id = "" },
              new { docConstraint = new DocumentConstraint() }
            ); 

问题在于第一条路线(“严格”)。三种 url 可以匹配第一个路由。 mycontroller/23/myaction、mycontroller/23/myaction/12 或 mycontroller/23/mvaction/stringid。如果我尝试在不指定 id 值的情况下使用此路由,则一切正常,例如:

Html.ActionLink("Link text", "ActionName", new{docid = 23});

一切顺利,但如果我使用如下链接:

  Html.ActionLink("Link text", "ActionName", new{docid = 23, id = 223})

这将生成绝对正确的 url currentcontroller.mvc/23/ActionName/223,但是当它加载页面时,它会在 jquery1.4.2.min.js 文件中给出 JavaScript 错误。

这很奇怪:如果我将 id 更改为 someid =223 它将反映在查询字符串中,并且不会出现 JS 错误。

编辑:我做了一些进一步的调试,发现当在路由值中同时提到 id 和 docid 时,在 global.asax 中忽略了一件事,即忽略路径。

routes.RouteExistingFiles = false;
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.ignoreRoute 完全被绕过,在我的控制器中调试时,我可以在路由值字典中看到 JS 文件的名称。

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    它给出了 javascript 错误 jquery1.4.2.min.js 文件

    最可能的原因是您在页面上显示的内容不同,并且您正在执行导致错误的操作。你能从渲染页面中提供足够的样本来展示你使用 jQuery 的目的吗?

    【讨论】:

    • 问题可能与 javascript 无关。正如我在问题中提到的,当我使用 id 参数和 docid 参数时,错误发生了。如果我将 id 更改为 someid(或其他)一切正常。我认为(我可能错了)“{controller}.mvc/{docid}/{action}/{id}”匹配时出现问题
    • 我已经做了一些调试并更新了问题 plz c 如果你能在这里帮助我的话
    【解决方案2】:

    如果我们将脚本从解决方案资源管理器拖到 site.master,它会产生以下输出

    <script type="text/javscript" src="../../scripts/jquery.min.js"></script> 
    

    前导点 (..) 造成了问题。将源路径放入 url.content 或使用 /scripts 代替 ../../scripts 将解决问题,因为这些前导句点迫使它们匹配 global.asax 中的某些路由。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      相关资源
      最近更新 更多