ASP.net MVC RouteLink и дополнительные значения routeValues
-
23-08-2019 - |
Вопрос
Я пытаюсь выяснить, как условно установить значение routeValue, которое является необязательным.
У меня есть
<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex) }) %>
Если посетитель нажимает на "категорию", я показываю только товары этой категории, но если "категории" нет, я показываю все товары.
Эти 2 URL-адреса были бы действительными:
/Товары/Страница
/Товары/Страница?категория=автомобили
RouteLink находится на моем пейджере, поэтому я подумал, что мог бы каким-то образом передать параметр category в ссылках на пейджере, чтобы сохранить категорию между страницами.Однако я не уверен, как я справляюсь со случаем, когда категория не выбрана, по сравнению с тем, когда выбрана категория.
Я знаю, что могу это сделать:
<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=cars }) %>
Но возможно ли обработать оба случая без создания какого-либо неудобного оператора if?
Решение
Это всего лишь идея, но разве вы не можете просто передать пустой параметр category?
<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=(ViewData["CategoryName"]) }) %>
И в вашем productscontroller, где вы получаете страницу, просто проверьте, существует она или нет?
public ActionResult Index(int page, string category)
{
ViewData["CategoryName"] = category;
if(!string.IsNullOrEmpty(category)){
//paging with category
}else{
//paging without category
}
return View("Create");
}
Или это то, что вы подразумеваете под "неуклюжим утверждением if"?
Другие советы
Если Автомобили переменная является нулевой или пустой строкой, Html.Метод RouteLink не добавит Категория автоматически преобразуйте URL-адрес в параметр.Вам не нужно проводить дополнительную проверку.