razor - valor - Pasar un parámetro nulo al controlador con ActionLink
pasar un valor del controlador a la vista (1)
Tengo una vista que enumera una serie de categorías:
<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>
Como se muestra, debería obtener una lista de enlaces de categorías, la superior es "Todos" y los siguientes son el nombre de categoría respectivo, con una identificación pasada al controlador.
Mi controlador se ve así:
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);
}
Entonces las categorías siempre deberían ser iguales. Pero los artículos deben mostrar cada elemento, cuando el ID es nulo y los artículos de la categoría específica cuando se establece el id .
Todo funciona muy bien, así que cuando hago clic en un enlace de categoría. Llego a la url de esta manera:
/ Productos / Índice / 3
¡Estupendo! Ahora hago clic en el enlace "Todos", pero me dirige a / Products / Index / 3 aunque claramente no le paso un parámetro. Intenté pasar un valor nulo:
@Html.ActionLink("Alle", "Index", "Products", new { id = null })
Pero luego aparece el error: no puedo asignar ''nulo'' a la propiedad de tipo anónimo.
¿Cómo puedo forzar que nulo pase a mi controlador de índice?
La acción de su controlador será lo suficientemente feliz como para aceptar un int
nullable, así que ¡dale un int
nullable como ese!
@Html.ActionLink("Alle", "Index", "Products", new { id = (int?)null })