asp.net mvc路由清理地址栏

时间:2015-01-25 11:23:11

标签: asp.net asp.net-mvc

使用razor url.action调用时,

<a href="@Url.Action("Index", "Profile", new { ThemeCode = 'SOC' })">

然后我在地址栏中收到此链接

  

xxx.com/Profile?ThemeCode=SOC

我想将属性发送到配置文件控制器中的索引方法,但我还希望在地址栏中显示更干净的外观。

像这样:

  

xxx.com/soc

有可能吗?

2 个答案:

答案 0 :(得分:1)

例如,您可以添加特定路线(假设您还希望默认路线为/Home/Index

public static void RegisterRoutes(RouteCollection routes)
{
  routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

  routes.MapRoute(
    name: "Profile",
    url: "Profile/{action}/{ThemeCode}",
    defaults: new { controller = "Profile", action = "Index", ThemeCode  = UrlParameter.Optional }
  );

  routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Task", action = "Index", id = UrlParameter.Optional }
  );
}

答案 1 :(得分:0)

我可以为所有无效的地址创建一个免费套餐吗? 像xxx.com/Profile/Social123不应该给servererror,但重定向到家庭控制器等..