C# - How to Rewrite a URL in MVC3

2019-08-21 21:08发布

I have an URL like this: http://website.com/Profile/Member/34

I need this URL runs like this: http://website.com/Profile/John

Given John as profile name for the user id=34.

Can anyone give me directions to do that?

2条回答
太酷不给撩
2楼-- · 2019-08-21 21:32

In global.asx you need to add a new route.

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

    }

You will still need to implement the action that handles looking up the profile based on {member}.

查看更多
We Are One
3楼-- · 2019-08-21 21:47

You have to add a custom route in the global.ascx.cs that will be used to redirect to the good controller. But I guess that "John" is not a unique value so you will have to keep the id in the Url, or if John is the username and is unique you can go with this url:

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

Then in your controller you will have :

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

If "John" is not a unique value I suggest you use :

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

So your Url will look like http://website.com/Profile/John/34 and youre controller :

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

Let me know if you need more help!

查看更多
登录 后发表回答