我有一個名為Search的控制器。正常的網址如下:
localhost:44351/<ClientName>/Search/ByCity
這會在我的SearchController.
然而,現在像下面的例子這樣的 url 也需要在 SearchController 中點擊一個動作:
localhost:44351/<ClientName>/Search/Pharmacy/ByCity
如果 url 包含“Pharmacy/ByCity”,我需要以某種方式告訴我的SearchController以轉到 ByCity 操作。
我已經嘗試使用路由屬性,但我的應用程式仍然會觸發我的舊 Pharmacy 操作。
在我的 RouteConfig 中,我有這個:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
然后,在我的SearchController,我有這個:
public virtual ActionResult Pharmacy()
{
//this is an existing action, which gets hit, even when I type in "Pharmacy/ByCity", which is not what I want to happen.
}
[Route("Pharmacy/ByCity")]
public virtual ActionResult ByCity()
{
//this never gets hit
}
知道如何使用包含“Pharmacy/ByCity”的網址來點擊我的“ByCity”操作,而不是“Pharmacy”嗎?
謝謝
uj5u.com熱心網友回復:
可以通過如下設定來實作常規路線:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Pharmacy",
url: "{clientname}/{controller}/Pharmacy/{action}",
defaults: new { controller = "search" }
);
routes.MapRoute(
name: "Search",
url: "{clientname}/{controller}/{action}",
defaults: new { controller = "search", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
uj5u.com熱心網友回復:
根據路由表中的順序訪問路由。
對于常規路由 (RouteConfig.cs),您可以在默認路由之前添加您的特定路由。
- 洗掉
Route[]控制器中的屬性 - 將以下代碼用于 RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// add your specific route, before the default route
routes.MapRoute(
name: "SearchByCity", // random name
url: "Search/Pharmacy/ByCity",
defaults: new { controller = "Search", action = "ByCity" }
);
// this is the default route
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
如果要使用屬性路由,請按照以下步驟操作。
- 洗掉 RouteConfig 中的默認路由。
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
}
- 然后使用下面的控制器,我們用于
RoutePrefix控制器和Route操作。
[RoutePrefix("Search")]
public class SearchController : Controller
{
[Route("Pharmacy")]
public virtual ActionResult Pharmacy()
{
return View("index");
}
[Route("Pharmacy/ByCity")]
public virtual ActionResult ByCity()
{
return View("index");
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/445075.html
標籤:C# asp.net-mvc url路由
