0

我正在定义我的应用程序 URL,例如

domainname.com/storecontroller/storeaction/storename

我想重写

domainname.com/storecontroller/storename

实际上,我需要从 url 中跳过 storeaction,我不想用带有“?”的查询字符串来做。无论如何通过注册路由配置路径或任何其他方式来做到这一点?

4

2 回答 2

1

是的。您可以将 action 定义为默认参数,并仅匹配具有 Regex 约束的特定控制器:

routes.MapRoute("<route name>", "{controller}/{storename}", 
     new 
     { 
         action = "storeaction" 
     },
     new
     {
         controller = "somecontroller1|somecontroller2|somecontroller3",
     });

(动作将始终具有默认值“storeaction”)

请注意,您需要在默认通用路由之前定义此路由,以便在此启动之前它不会捕获它。

于 2016-08-08T20:58:36.337 回答
1

使用 属性路由

[RoutePrefix("Home")]
public ActionResult HomeController : Controller
{
  [Route("{storeName}")]
  public ActionResult ProcessStore(string storeName)
  {
   // to do : Return something
  }

  public ActionResult Index()
  {
   // to do : Return something
  }
}
[RoutePrefix("Payment")]
public ActionResult PaymentController : Controller
{
  [Route("{storeName}")]
  public ActionResult ProcessStore(string storeName)
  {
   // to do : Return something
  }
}
于 2016-08-08T21:07:00.737 回答