更改Url.Action(操作,控制器)默认功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更改Url.Action(操作,控制器)默认功能相关的知识,希望对你有一定的参考价值。

我不知道我的路由配置有什么问题。

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

但是@Url.Action("Index","Agent")回归

http://localhost:61759/agent

而不是

http://localhost:61759/Agent/Index

请让我知道缺少什么:)

P.S我不想打扰默认的路由设置,即

  1. http://localhost:61759应该路由到默认页面
  2. http://localhost:61759/Agent应该前往http://localhost:61759/Agent/Index
答案

在“默认”路线之前映射没有action = "Index"的路线:

routes.MapRoute(
    name: "NoDefaultAction",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", id = UrlParameter.Optional }
);

// Code below unchanged
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

现在@Url.Action("Index", "Agent")返回"/Agent/Index"并且“默认”路线不受干扰:

  1. http://localhost:61759应该路由到默认页面
  2. http://localhost:61759/Agent应该前往http://localhost:61759/Agent/Index

以上是关于更改Url.Action(操作,控制器)默认功能的主要内容,如果未能解决你的问题,请参考以下文章

@Url.Action("Action","Controller") 调用同名的 post 和 get 方法

使用 Url.action 调用控制器方法时仅获取第一个参数值。

控制器中的 Url.Action 两次生成端口

Url.Action:如何将参数从视图传递到控制器?

Url.Action 未输出自定义映射控制器路由

@Url.Action 添加“amp;”在控制器中创建空值的参数之间?