vista valor una pasar parametros mvc enviar controlador beginform razor parameters asp.net-mvc-4 controller actionlink

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 })