【发布时间】:2012-02-13 17:53:53
【问题描述】:
我有以下路线:
routes.MapRoute(
"Property",
"{language}/property/{propertyUrlId}",
new { controller = "PropertyDetails", action = "Property" }
这是应该为该路由调用的控制器:
public class PropertyDetailsController : Controller
{
public ActionResult Property(string language, string propertyUrlId)
{
等等
以及应该使用该路由的以下 URL:
http://domain.com/en-us/property/3
相反,我得到 404。任何想法为什么?
这是我的路线:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Property",
"property/{propertyUrlId}",
//new { controller = "PropertyDetails", action = "Property" }, new { language = @"[a-zA-Z]{2}-[a-zA-Z]{2}" }
new { controller = "PropertyDetails", action = "Property" }
);
}
也不适用于语言或语言/国家/地区。
【问题讨论】:
-
注册路由规则的顺序很重要。请按注册顺序向我们提供您正在创建的所有路线。
-
即使在建议的更改之后,我仍然收到 404。还有什么我可以尝试的吗?
-
@AndrewBarber 您的评论不正确。如果它与另一条路线匹配,您将获得 404,例如mvc 默认路由 -> 控制器未知 -> 404
-
birdus:您需要发布您的整个路由定义集,以便我们查看是否有其他匹配。我仍然认为我删除的答案是你的问题,但因为你甚至不会尝试......
-
@AndrewBarber mvc 不关心名称。它只是遵循路由规则。想象一下你有默认路由。如果您访问 /controllerDoesNotExist/actionDoesNotExist 会发生什么? 404!为什么?因为路线是匹配的。
标签: asp.net-mvc model-view-controller routes