加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-2 – ASP.NET MVC路由和URL.Action

发布时间:2020-12-16 09:49:35 所属栏目:asp.Net 来源:网络整理
导读:在我的一个asp.net mvc 2视图中,我有以下声明 window.location.href = '% = Url.Action("Index","Feature",new {id=""}) %/' + $("#ProductId").val(); 可以看出$(“#ProductId”).val()只能从客户端操作计算出来,所以外部url.Action 我的路线如下图所示: p
在我的一个asp.net mvc 2视图中,我有以下声明

window.location.href = '<% = Url.Action("Index","Feature",new {id=""}) %>/' + $("#ProductId").val();

可以看出$(“#ProductId”).val()只能从客户端操作计算出来,所以外部url.Action

我的路线如下图所示:

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.IgnoreRoute("{*allaspx}",new { allaspx = @".*.aspx(/.*)?" });
            routes.IgnoreRoute("{*favicon}",new { favicon = @"(.*/)?favicon.ico(/.*)?" });
            routes.IgnoreRoute("{*allimages}",new {allimages = @".*.jpg(/.*)?"});
           routes.MapRoute(
              "Default",// Route name
              "{controller}.mvc/{action}/{id}",// URL with parameters
              new { controller = "Home",action = "Index",id = UrlParameter.Optional } // Parameter defaults
          );


           routes.MapRoute(
            "DefaultIndex",// Route name
            "{controller}.mvc/{id}",// URL with parameters
            new { controller = "Home",action = "Index"} // Parameter defaults
        );
            routes.MapRoute("Root","",new { controller = "Home",id = "" });


        }

Url.Action的请求失败,因为路由认为“action”是“id”

如何确保“DefaultIndex”中的路由配置已经过验证且url是

键>>值
controller =功能
action = index
id = 9a1347dc-60b0-4b3b-9570-9ed100b6bc6a

编辑2

图2:

编辑1-路线订单

我几乎以为我通过改变路线顺序来解决它

routes.MapRoute(
            "DefaultIndex",id = UrlParameter.Optional } // Parameter defaults
        );



           routes.MapRoute(
              "Default",id = UrlParameter.Optional } // Parameter defaults
          );



            routes.MapRoute("Root",id = "" });

它确实有效
http://localhost:61000/Feature.mvc/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a/

但在同一页面上的帖子失败了

http://localhost:61000/Product.mvc/List

****历史****

一直在使用$(“#ProductId”).val();
=“/ domainname [虚拟目录别名] /Fewature.mvc/Index”$(“#ProductId”).val();

总是工作,虽然我不得不在发布到服务器域名[虚拟目录别名] /更改从开发到测试到生产时更改所有脚本

试图简化它:

先前有以下声明:

window.location.href =’<%= Url.Action(“Index”,“Feature”})%> /’$(“#ProductId”).val();

会导致多个Id值

http://localhost:61000/Feature.mvc/9a1347dc-60b0-4b3b-9570-9ed100b6bc6a/3c5941e4-cb25-4d6f-9117-9ed100b4ca91

它将现有路线{id}映射到Url.Action(“索引”,“功能”}

导致NoMatch

介绍

新的{id =“”}来绕过它.

解决方法

请尝试使用Url.RouteUrl

window.location.href = '<%= Url.RouteUrl("Default",new { @Controller = "Feature",@Action = "Index"}) %>/' + $("#ProductId").val();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读