我想为新闻列表制作MVC路线,可以多种格式提供。
是否可以通过一条路线执行此操作(在我计划的设计中,在一些地方出现更为一般的“可选扩展”情况)?或者我需要制作两条这样的路线:
routes.MapRoute("News-ImplicitFormat",
"news",
new { controller = "News", action = "Browse", format = "" });
routes.MapRoute("News-ExplicitFormat",
"news.{format}"
new { controller = "News", action = "Browse" });
让路由系统支持如下内容似乎很有用:
routes.MapRoute("News",
"news(.{format})?",
new { controller = "News", action = "Browse" });
答案 0 :(得分:12)
我提出了一种方法来支持如下所示添加对:
public static void MapRouteWithOptionalFormat(this RouteCollection routes,
string name,
string url,
object defaults)
{
Route implicitRoute = routes.MapRoute(name + "-ImplicitFormat",
url,
defaults);
implicitRoute.Defaults.Add("format", string.Empty);
Route explicitRoute = routes.MapRoute(name + "-ExplicitFormat",
url + ".{format}",
defaults);
}
答案 1 :(得分:0)
您可以考虑使用约束来使其适用于正常路线。
更新:实际上,我误解了这个问题。另一个答案是现在要做的正确的事情。或者创建自定义路线。我们正在考虑将可选细分作为未来可能的功能。