Tengo un controlador con un método de acción de la siguiente manera:ASP.NET MVC - pasar parámetros al controlador
public class InventoryController : Controller
{
public ActionResult ViewStockNext(int firstItem)
{
// Do some stuff
}
}
Y cuando lo ejecuto me sale un error que dice:
Los parámetros diccionario no contiene un valor válido de tipo 'System.Int32' para el parámetro 'firstItem'. Para que un parámetro sea opcional, su tipo debe ser un tipo de referencia o un tipo Nullable.
Lo tenía funcionando en un punto y decidí probar la función sin parámetros. Al descubrir que el controlador no era persistente, volví a poner el parámetro, ahora se niega a reconocer el parámetro cuando llamo al método.
estoy usando esta sintaxis url para llamar a la acción:
http://localhost:2316/Inventory/ViewStockNext/11
Cualquier idea por qué me sale este error y lo que tengo que hacer para solucionarlo?
He intentado agregar otro método que lleva un entero a la clase, pero también falla por la misma razón. He intentado agregar uno que toma una cadena, y la cadena se establece en nulo. He intentado agregar uno sin parámetros y eso funciona bien, pero por supuesto no se ajusta a mis necesidades.
O simplemente cambie el nombre de "firstItem" a "id" –
Además, sea prudente agregar un objeto de restricciones al MapRoute, así: 'new {firstItem = @" \ d "}'. De esta forma, ** solo ** aceptará si el parámetro es cualquier tipo de número. Puedes modificar la expresión regular como quieras, e incluso limitar el número de decimales, como este: 'new {firstItem = @" \ d {4} "}' - ahora solo puede tener 4 números. Editar: ejemplo de MapRoute completamente modificado: http://jsfiddle.net/HJRgT/ – KristianB