.net mvc4如何设置自定义路由

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.net mvc4如何设置自定义路由相关的知识,希望对你有一定的参考价值。

比如我在 控制器 UserController写了个action “List”,包含两个参数
string name,type
代码 :
public ActionResult List(string name, string type)

return View();

要在RouteConfig.cs 中如何定义路由才能正确的把参数传进action
比如 这个URL“localhost/User/List/name-type.html
我是添加了一个自定义路由,但是获取不到参数
route.MapRoute(
"myRoute",
url: "controller/action/name-type.html"
);
这样设置则可以获得参数
url: "controller/action/name/type"求高手
不能添加特殊字符进去吗,那起点中文的url是怎么匹配的?
比如
BookReader/vip,3487185,87551174.aspx

,,,不是在访问这个路由的时候把参数带上它就去到你后台了么,,localhost:****/User/List/?name=""&type="" 这样的么,,路由规则不管参数这一块的吧,,,它的功能不是这样我路由是 User/List 然后想去到的后台方法是 User/UserList/这样的话才需要去改路由规则的么,,,追问

可以的
比如
route.MapRoute(
"myRoute",
"controller\action\id",
new controller ="Home",action="Index“,id="defaultid"
);
这个id不就是参数吗,看来你跟我一样不太懂

追答

吐血,它那个ID是 说/Home/index/3 这样的路由然后就可以跳进 /Home/Index?id=3 的意思。然后如果你路由只有前面那段,就跳进这里来

追问

虽然没有帮我解决问题,但还是谢谢哦

参考技术A 因为localhost/User/List/name-type.html
可以匹配默认路由
"controller\action\id"
name-type.html=id
你的路由配置没有错,但是应该把自定义路由放到默认路由的前面本回答被提问者采纳

Asp.net MVC 自定义路由

在做公司接口的时候  由于规范API 要用点分割。 如: HealthWay.controller.action

 在MVC 4 下面做了个 路由配置如下:

 

public override void RegisterArea(AreaRegistrationContext context)
        {

            context.MapRoute(
                "HealthWay_default",
                "HealthWay.{controller}.{action}",
                new { action = "Index" }
            );
        }

 

部署后一直提示 :

HTTP 错误 404.0 - Not Found

您要找的资源已被删除、已更名或暂时不可用。

原因是 iis 上的集成.net 4.0  不支持这样格式。

 

在配置文件中加上如下代码,就解决了

  <system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
  </system.webServer>

 

以上是关于.net mvc4如何设置自定义路由的主要内容,如果未能解决你的问题,请参考以下文章

apache_conf 如何在.NET MVC4中创建自定义BundleTransform,特别是为了不重命名变量。因为我找不到这个

MVC4 中的自定义 403 错误页面未显示

如何在 MVC4 的 UserProfile 中创建自定义附加字段

MVC4 自定义错误页面

如何制作.NET Web API 的自定义路由?

在.NET 6.0中自定义接口路由