URL MVC C# 中的路由

URL Routing in MVC C#

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

domainname.com/storecontroller/storeaction/storename

我想改写成

domainname.com/storecontroller/storename

实际上,我需要跳过 url 中的存储操作,我不想使用带有“?”的查询字符串来完成它。有没有办法通过注册路由配置路径或任何其他方式来做到这一点?

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

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

(操作将始终具有默认值 "storeaction")

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

使用Attribute routing

[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
  }
}