Вопрос

Я пытаюсь выяснить, как условно установить значение 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-адрес в параметр.Вам не нужно проводить дополнительную проверку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top