Передать нулевой параметр контроллеру с помощью ActionLink
У меня есть представление, которое перечисляет кучу категорий:
<ul>
<li>@Html.ActionLink("All", "Index", "Products")</li>
@foreach (var item in Model.ProductCategories)
{
<li>@Html.ActionLink(item.Name, "Index", new { id = item.Id }, null)</li>
}
</ul>
Как показано, я должен получить список ссылок на категории, верхний из которых - "все", а следующие-соответствующее название категории, с идентификатором, переданным контроллеру.
Мой контроллер выглядит так:
public ActionResult Index(int? id)
{
var categories = _productCategoryRepository.GetAll().OrderByDescending(f => f.Name);
var items = id == null
? _productItemRepository.GetAll().OrderBy(f => f.Name).ToList()
: _productCategoryRepository.GetSingle((int)id).ProductItems.OrderBy(f => f.Name).ToList();
var model = new ProductsViewModel()
{
ProductCategories = categories,
ProductItems = items
};
return View(model);
}
Таким образом, категории всегда должны быть одинаковыми. Но элементы должны показывать каждый элемент, когда id равен null и элементы определенной категории, Когда id равен набор.
Это все работает абсолютно отлично, поэтому, когда я нажимаю ссылку категории. Я добираюсь до url следующим образом:
/Продукты / Индекс/3
Отлично! Теперь я нажимаю ссылку "все", но она направляет меня к /Products/Index/3, хотя я явно не передаю ей параметр. Я попытался передать нулевое значение:
@Html.ActionLink("Alle", "Index", "Products", new { id = null })
Но затем я получаю ошибку: не может присвоить 'null' свойству анонимного типа.
Как заставить null быть переданным в мой индекс контролер?