C# - 如何在MVC3中重写URL

时间:2011-09-29 19:43:32

标签: asp.net-mvc-3 url-rewriting

我有这样的网址:     http://website.com/Profile/Member/34

我需要这个URL运行如下:     http://website.com/Profile/John

将John视为用户id = 34的配置文件名称。

任何人都可以指示我这样做吗?

2 个答案:

答案 0 :(得分:1)

在global.asx中,您需要添加新路线。

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
            "Member", // Route name
            "Profile/{member}", // URL with member 
            new { controller = "YourController", action = "Profile"}
        );

    }

您仍然需要实现处理基于{member}查找配置文件的操作。

答案 1 :(得分:1)

您必须在global.ascx.cs中添加一个自定义路由,该路由将用于重定向到良好的控制器。但我猜“John”不是一个独特的值,因此您必须将ID保留在Url中,或者如果John是用户名并且是唯一的,您可以使用此URL:

routes.MapRoute("Member", "Profile/{member}", new { controller = "Member", action = "Profile"});

然后在您的控制器中,您将拥有:

public ActionResult Profile(string username){
    //fetch from the db
}

如果“John”不是唯一值,我建议您使用:

routes.MapRoute("Member", "Profile/{id}/{member}", new { controller = "Member", action = "Profile"});

所以你的网址看起来像http://website.com/Profile/John/34而你是控制者:

 public ActionResult Profile(int id){
        //fetch from the db
    }

如果您需要更多帮助,请与我联系!