Routing 如何在路由url中添加可选字符串文字?
我试图在url的末尾添加一个可选参数来指定格式。理想情况下,其工作原理如下:Routing 如何在路由url中添加可选字符串文字?,routing,asp.net-mvc-3,Routing,Asp.net Mvc 3,我试图在url的末尾添加一个可选参数来指定格式。理想情况下,其工作原理如下: localhost/details/42和localhost/details/42.xml都指向相同的操作 目前我已经定义了这样的路线 routes.MapRoute("with_Format", "Details/{id}.{format}", new { controller = "Person", action = "Details" }); routes.MapRoute("without_forma
localhost/details/42
和localhost/details/42.xml
都指向相同的操作
目前我已经定义了这样的路线
routes.MapRoute("with_Format", "Details/{id}.{format}",
new { controller = "Person", action = "Details" });
routes.MapRoute("without_format", "Details/{id}",
new { controller = "Person", action = "Details" });
我想用一个路由定义来实现这一点。我知道你可以添加一个可选的url段,比如
“Details/{id}{format},new{format=UrlParameter.optional}
;但是,你不允许有两个没有用文字字符分隔的路径段。有没有办法使{format}
可选还是我需要使用两个路由来完成此操作?您可以保留分隔符并将格式设置为可选,或者在所有情况下都需要值时将其设置为默认值。它类似于默认路由:
routes.MapRoute(
"OptionalFormat",
Details/{id}.{format},
new { controller = "Person", action = "Details", format = UrlParameter.Optional /* or "xml" */ }
);
由于没有继续format
段,因此可以选择它。如果以后有非可选的且没有默认值,则始终必须指定format
但在您的情况下,最后一个段是format
将其定义为一个可选参数(这意味着在不指定格式的情况下,您的操作将不会获得任何内容)或为其提供一个默认值(这意味着即使未指定任何内容,您也将始终获得某些内容)