我试图在网址中隐藏操作方法名称,但没有案例。我有这个:
RouteConfig:
routes.MapRoute(
name: "People",
url: "People/{id}",
defaults: new { controller = "People", action = "Index"}
)
把PeopleController:
public ActionResult Index(string id)
{
return View(id);
}
我必须使用Url.Action调用此方法("索引","人物",新{id =" test"})或同样的浏览器放了http:www.mysite.com/People/test
不喜欢这样:http:www.mysite.com/People/Index/test
有什么想法吗?感谢
RouteConfig.cs:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "People",
url: "People/{id}",
defaults: new { controller = "People", action = "Index"}
);
}
}
}
答案 0 :(得分:0)
移动你的" People"在你的"默认"之上的路线。 People/test
被#34;默认"的定义所抓住,而且永远不会落到"人物"一。与一系列catch块中的Exceptions一样,您的路由映射需要从最具体的开始,并以更通用的方式工作。