asp.net-mvc – ASP.NET MVC Route with dash

我有ASP.NET MVC路由问题.

我准备了以下路由表来映射这样的url

mywebsite/mycontroller/myaction/14-longandprettyseoname

参数:

14 => id (integer)

longandprettyseoname -> seo_name (string)

    routes.MapRoute(
        "myname",
        "mycontroller/myaction/{id}-{seo_name}", 
        new { controller = "mycontroller", action = "myaction", id = 0, seo_name = (string)null });

    routes.MapRoute(
        "Default",  
        "{controller}/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" });

它适用于上面的URL,但它有以下类型的URL的问题

mywebsite/mycontroller/myaction/14-long-and-pretty-seo-name

这有可能使它工作吗?

编辑:

“myController的/ myaction / {} seo_name – (编号)”

好像在起作用

最佳答案 我不认为路线是可区分的,因为它无法确定哪个“ – ”分开来指定{id}和{seo-name}.

如何使用下划线为您的SEO名称?或者您可以使用SEO名称作为实际{id}.如果SEO名称是唯一的,那么这是一个非常可行的选项,您可以将其用作数据库中该条目的伪主键(假设它从数据库中提取内容)

另外,利用Phil Haack的route debugger看看什么有效,哪些无效.

点赞