我有ASP.NET MVC路由问题。
我准备了下面的路由表来映射这样的URL
mywebsite / mycontroller / myaction / 14-longandprettyseoname
到参数:
14 => id(整数)
longandprettyseoname-> seo_name(字符串)
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个长而漂亮的SEO名称
有可能使其工作吗?
编辑:
"mycontroller/myaction/{seo_name}-{id}"
似乎在工作
最佳答案
我不认为该路由是可区分的,因为它将无法找出要在哪个“-”处拆分以指定{id}
和{seo-name}
。
如何在您的SEO名称中使用下划线?或者,您可以仅使用SEO名称作为实际的{id}
。如果SEO名称是唯一的,则这是一个非常可行的选项,您可以将其用作数据库中该条目的伪主键(假设它正在从数据库中提取内容)
另外,利用Phil Haack的route debugger查看有效和无效的方法。
关于asp.net-mvc - 带破折号的ASP.NET MVC路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/868361/