如何在MVC 4中更改URL格式?

时间:2016-03-03 17:40:28

标签: c# asp.net-mvc

目前我的网址如下:

http://localhost:9737/ProfileEdit?writerId=4

但我希望它是这样的:

http://localhost:9737/ProfileEdit/4

这是我的行动签名:

public ActionResult ProfileEdit(long writerId)

我尝试在RouteConfig文件中添加新路由,如下所示:

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

但没有运气..所以如何更改网址格式?

4 个答案:

答案 0 :(得分:5)

路由将参数定义为id

url: "{controller}/{action}/{id}"

但您正在使用writerId

http://localhost:9737/ProfileEdit?writerId=4

更改路线以匹配:

url: "{controller}/{action}/{writerId}"

请注意,这将有助于对使用该路由的每个网址进行此更改。

答案 1 :(得分:3)

您可以添加路线属性:

[Route("ProfileEdit/{writerId}")]
public ActionResult ProfileEdit(long writerId)

答案 2 :(得分:1)

  

您有两种方法:

     
      
  1. 更改路线值以匹配操作url: "{controller}/{action}/{writerId}"中参数的名称。

  2.   
  3. 执行相反操作并更改操作中的参数名称以匹配路线值public ActionResult ProfileEdit(long id)

  4.   

修改

如果您想要多个参数相同,您还需要在路线中指定它们:

  

routes.MapRoute( "ProfileEdit", "{controller}/{action}/{writerId}/{otherParameter}", new { controller = "Home", action = "ProfileEdit", writerId = "", otherParameter = "" });

答案 3 :(得分:0)

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