我有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/

10-14 18:33
查看更多