可能重复:
ActionLink to show parameters in URL instead of querystring?
我有以下路线:
routes.MapRoute(
"List", // Route name
"{Home}/{list}/{id}/{name}", // URL with parameters
new {
controller = "Home",
action = "List",
id = UrlParameter.Optional,
name = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Details", // Route name
"{Home}/{details}/{id}/{name}", // URL with parameters
new {
controller = "Home",
action = "Details",
id = UrlParameter.Optional,
name = UrlParameter.Optional } // Parameter defaults
);
我正在努力:
/家庭/列表/ 1 /一个
/家庭/信息/ 2 / B
以上结果在home / details / 2?name = b
答案 0 :(得分:5)
假设你没有弄错你的代码示例,你不能。
路线处理程序将选择匹配的第一条路线。
然而,从它看起来你真正想要的是这个:
routes.MapRoute(
"List", // Route name
"home/list/{id}/{name}", // URL with parameters
new {
controller = "Home",
action = "List",
id = UrlParameter.Optional,
name = UrlParameter.Optional } // Parameter defaults
);
routes.MapRoute(
"Details", // Route name
"home/details/{id}/{name}", // URL with parameters
new {
controller = "Home",
action = "Details",
id = UrlParameter.Optional,
name = UrlParameter.Optional } // Parameter defaults
);
事实上,这两者足够相似,可以被提炼为1路
routes.MapRoute(
"Details", // Route name
"{controller}/{action}/{id}/{name}", // URL with parameters
new {
controller = "Home",
action = "List",
id = UrlParameter.Optional,
name = UrlParameter.Optional } // Parameter defaults
);
答案 1 :(得分:0)
避免使用两个UrlParameter.Optional声明创建路由。
您可以通过在默认路线上方添加一条路线来实现路由,例如:
routes.MapRoute(
"Id_Name", // Route name
"{controller}/{action}/{id}/{name}", // URL with parameters
new{
controller = "Home",
action = "List" } // Parameter defaults
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {
controller = "Home",
action = "List",
id = UrlParameter.Optional} // Parameter defaults
);
第一个路径将在声明两个变量时创建所需的URL。第二条路线适用于一个变量或无变量。