Мой контроллер выглядит так:
[HttpGet]
[Route("{brand}/{category}/{subcategory?}/{productid:int:min(9000)}", Name="ProductDetails")]
public ActionResult Details(int productid)
{ //...}
Я также пробовал без вопросительного знака в конце подкатегории, потому что он может быть нулевым.
[Route("{brand}/{category}/{subcategory}/{productid:int:min(9000)}", Name="ProductDetails")]
У меня есть это в моих представлениях бритвы:
<a href="@Url.RouteUrl("ProductDetails",
new { brand = item.Brand,
category = item.CatCodeNaam,
subcategory = item.SubCategoryName,
productid = item.ID })">test</a>
<a href="@Url.Action("Details", "Products",
new { brand = item.Brand,
category = item.CatCodeNaam,
subcategory = item.SubCategoryName,
productid = item.ID })">test</a>
Оба метода отлично работают, когда SubCategoryName
не пусто. Но что делать, когда он пуст? Я не могу добавить другой маршрут, потому что он будет иметь такое же количество (и тип) входных параметров, только один int.
Когда у меня есть этот контроллер:
[HttpGet]
[Route("{brand}/{category}/{subcategory}/{productid:int:min(9000)}", Name = "ProductDetails")]
[Route("{brand}/{category}/{productid:int:min(9000)}", Name = "ProductDetails2")]
public ActionResult Details(int productid)
первый <a
работает, когда подкатегория пуста, а второй <a
с именем маршрута работает, когда подкатегория не пуста. Есть ли способ иметь только одну версию <a
и, возможно, только один маршрут в качестве атрибута метода Details?