如何在url mvc中隐藏动作方法

时间:2014-07-22 18:36:33

标签: asp.net-mvc

我试图在网址中隐藏操作方法名称,但没有案例。我有这个:

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"}
        );
    }
}

}

1 个答案:

答案 0 :(得分:0)

移动你的" People"在你的"默认"之上的路线。 People/test被#34;默认"的定义所抓住,而且永远不会落到"人物"一。与一系列catch块中的Exceptions一样,您的路由映射需要从最具体的开始,并以更通用的方式工作。