我顯然在理解此處的路線或嘗試實作不可能的路線時遇到問題。
我有這個RouteConfig:
routes.MapRoute(
name: "Explorer",
url: "{controller}/{action}/{prefix}/{value}",
defaults: new { controller = "Explorer", action = "Index", prefix ="", value = UrlParameter.Optional }
);
在Explorer控制器中,我有以下內容:
[RoutePrefix("Explorer")]
public class ExplorerController : Controller
{
public ActionResult Index()
{
return View();
}
[Route("id/{value}")]
public ActionResult Import(decimal? importId)
{
return View();
}
[Route("text/{value}")]
public ActionResult Import(string importWindow)
{
return View();
}
}
其中一個ACTION (Import) 有不同的PREFIX,例如windowandid但是每當我嘗試訪問它時(例如https://localhost/Explorer/Import/window/helloWorldOR https://localhost/Explorer/Import/id/200),它都會給我以下錯誤
當前對控制器型別“ExplorerController”的“Import”操作請求在以下操作方法之間存在歧義: System.Web.Mvc.ActionResult Import(System.Nullable`1[System.Decimal]) on type projectname.Controllers.ExplorerController System .Web.Mvc.ActionResult Import(System.String) 型別為 projectname.Controllers.ExplorerController
我知道它是模棱兩可的,但我有一個前綴,應該使它不模棱兩可。
如果這不是正確的方法,我在這里做錯了什么以及如何實作這一結果?
uj5u.com熱心網友回復:
[Route()]在控制器類中應用動作方法的屬性:
[RoutePrefix("Explorer")]
public class ExplorerController : Controller
{
// GET: Explorer
public ActionResult Index()
{
return View();
}
// Example: https://localhost/Explorer/Import/id/200
[Route("Import/id/{importId:decimal}")]
public ActionResult Import(decimal? importId)
{
return View();
}
// Example: https://localhost/Explorer/Import/window/helloWorld
[Route("Import/{text}/{importWindow}")]
public ActionResult Import(string importWindow)
{
return View();
}
}
Default在RegisterRoutes()方法中只定義路由:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/333233.html
標籤:网站 asp.net-mvc 路线
