ASP.net MVC RouteLink и дополнительные значения routeValues - PullRequest
2 голосов
/ 20 мая 2009

Я пытаюсь выяснить, как условно установить routeValue, что является необязательным.

У меня есть

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex) }) %>

Если посетитель нажимает на «категорию», я показываю только продукты этой категории, но если нет «категории», я показываю все товары.

Эти 2 URL будут действительны:

/ Продукция / Страница

/ Продукция / страница? Категория = автомобили

RouteLink находится в моем пейджере, поэтому я подумал, что могу каким-то образом передать параметр категории в ссылках в пейджере, чтобы сохранить категорию между страницами. Однако я не уверен, как мне поступить со случаем, когда ни одна категория не выбрана по сравнению с выбранной категорией.

Я знаю, что могу сделать это:

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=cars }) %>

Но возможно ли обрабатывать оба случая, не создавая неловкого оператора if?

Ответы [ 2 ]

3 голосов
/ 20 мая 2009

Это просто идея, но вы не можете просто передать пустой параметр категории?

<%= Html.RouteLink("<<<","Products",new { page=(Model.Products.PageIndex), category=(ViewData["CategoryName"]) }) %>

А в вашем контроллере продуктов, где вы получаете страницу, просто проверьте, существует она или нет?

public ActionResult Index(int page, string category)
{
    ViewData["CategoryName"] = category;

    if(!string.IsNullOrEmpty(category)){
        //paging with category
    }else{
        //paging without category
    }
    return View("Create");
}

Или это то, что вы подразумеваете под "неловким заявлением"?

2 голосов
/ 20 мая 2009

Если переменная cars является нулевой или пустой строкой, метод Html.RouteLink не будет автоматически добавлять параметр category в URL. Вам не нужно делать дополнительную проверку.

...