ASP.NET MVC传递参数作为url的一部分

时间:2016-12-19 14:45:48

标签: c# html asp.net-mvc hyperlink routing

我试图在我的应用程序中创建外观漂亮的URL,但是当我使用以下构造时

@Url.Action("Edit", "Account", new { userId = user.Id })

我有下一个参考mysite.com/Account/Edit?userId=42

如何获取类似mysite.com/Account/Edit/42的网址?

2 个答案:

答案 0 :(得分:4)

App_Start文件夹下的项目中,您将拥有一个名为RouteConfig.cs的文件,您可以在此处为应用程序指定自定义路由。

默认情况下,您将拥有以下

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

如果您执行了Url.Action("Edit", "Account", new {id = user.Id})

之类的操作,那将会被点击

如果您希望在不希望将userId更改为id的情况下适应您的规则,则可以按如下方式创建一个规则:

  routes.MapRoute(
            name: "EditRule",
            url: "{controller}/{action}/{userId}",
            defaults: new { controller = "Edit", action = "Account", userId = UrlParameter.Optional }
        );

注意:自定义规则应出现在默认规则之前,否则将触发默认规则

答案 1 :(得分:1)

使用

  

userId

如果您已在Id**controller method**

中使用**model logic**并将url更改为$this->load->helper('url');

`