Я использую mvc 5.2.3 на 4.5.1 и хочу эти URL-адреса
- /Nike обувь
- /Nike/Обувь/Бег
- /Nike/Рубашки/2002342345
- /Nike/Обувь/Бег/98765432234
Мой контроллер имеет:
[HttpGet]
[Route("{brand}/{category}/{subcategory}/{page:int?}", Name="ProductIndex")]
public ActionResult Index(string brand, string category, int? page, string subcategory = "")
и дает /Nike/Обувь/Бег, но не /Nike/Обувь, но /Products?brand=Nike&category=Обувь
Когда я добавляю
[HttpGet]
[Route("{brand}/{category}/{page:int?}")]
public ActionResult Index(string brand, string category, int? page)
/Nike/Shoes/ работает, но у меня также есть /Nike/Shoes/?subcategory=Running
и мой метод деталей:
[HttpGet]
[Route("{brand}/{category}/{subcategory}/{productid:int:min(9000)}", Name="ProductDetails")]
public ActionResult Details(int productid)
дает:
Текущий запрос неоднозначен между следующими методами действия: System.Web.Mvc.ActionResult Index(System.String, System.String, System.Nullable`1[System.Int32], System.String) для типа shopmvc.Controllers.ProductsController System.Web.Mvc.ActionResult Index(shopvc.ViewModels.ProductsViewModel) по типу shopmvc.Controllers.ProductsController System.Web.Mvc.ActionResult Details(Int32) по типу shopmvc.Controllers.ProductsController
Значит, что-то не так с моей ссылкой на продукт и маршрутами категорий/подкатегорий. или с тем, как я пытаюсь его достичь:
<a href="@Url.RouteUrl("ProductDetails", new { brand = item.Brand, category = item.Category, subcategory = item.SubCategory, productid = item.ID })">test</a>
<a href="@Url.Action("Details", "Products", new { brand = item.Brand, category = item.Category, subcategory = item.SubCategory, productid = item.ID })">
<a href="@Url.Action("Index", "Products", new { brand = c.Brand, category = c.Category, subcategory = c.SubCategory })">@c.DisplayName</a>