Asp.net mvc 3 如何使用用户友好的地址?

Asp.net mvc 3 如何使用用户友好的地址?,asp.net-mvc-3,ip-address,user-friendly,Asp.net Mvc 3,Ip Address,User Friendly,我有一些项目管理系统。如果我想打开id=123的项目,我将使用地址重定向到控制器操作: http://myhost:67845/Projects/id=123 如何将用户友好链接用于相同操作,如: http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you 您可以更新默认路线: public static void RegisterRoutes(RouteCollection routes) { routes.

我有一些项目管理系统。如果我想打开id=123的项目,我将使用地址重定向到控制器操作:

http://myhost:67845/Projects/id=123
如何将用户友好链接用于相同操作,如:

http://myhost:67845/Projects/John-can-develop-asp-net-site-for-you

您可以更新默认路线:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{title}",
        new { 
            controller = "Home", 
            action = "Index", 
            title = UrlParameter.Optional 
        }
    );
}
然后有一个控制器动作,它将标题作为参数

public ActionResult Index(string title)
{
    ...
}

通过使用默认路由,您可以使用
http://myhost:67845/Projects/123
无任何更改,因为123将被视为id

但是,如果您想要这种友好的名称,您必须在控制器中进行更改

在第二种情况下,在Projects控制器中(对于默认路由),这将由名为Index的方法处理。此方法应具有属性
字符串id


然后在你的方法中,你需要一种在约翰可以为你开发asp网站和123之间转换的方法。这可以是John可以为您开发asp net站点,即project 123的名称,或者您必须将友好名称存储在数据库中,以便进行转换。

好的,正如我所看到的,需要有一个此类友好名称的生成器,该生成器必须是唯一的,才能与您建立1=1的关系id@Oleg-没错。如果两个id具有相同的友好名称,则地址可能不明确,您可能不喜欢这样。即使名称对用户来说是友好的,它也必须指向特定条目,就像id必须指向特定条目一样。