He encontrado un escenario extraño que impide un bool? se publica de nuevo en el controlador correctamente. Es un problema muy específico, así que sigue los pasos para recrear.ASP.Net MVC3 error de enlace modelo
La aplicación debe implementarse como una carpeta virtual en IIS para que en lugar de/Inicio/Probar la URL sea/Virtual/Home/Test.
Inicio Controlador:
[HttpGet]
public ActionResult Test(int? temp, bool? testBool)
{
return View(testBool);
}
/Inicio/Vista de pruebas (cshtml Razor):
@model bool?
@{
ViewBag.Title = "Test";
}
@using (Html.BeginForm("Test", "Home", FormMethod.Get))
{
@Html.CheckBox("testBool", Model ?? false, new { onchange = "this.form.submit();" })
@Html.Label(Model == true ? "True" : "False")
}
En el segundo palo bool? no llega al controlador debido a la int? antes en la lista de parámetros. Esto se puede resolver poniendo el bool? antes de la int? en la lista de parámetros, pero obviamente no deberías tener que hacer esto. También funciona bien si no está en una carpeta virtual en IIS. ¿Existe el mismo problema si también se usa un método POST aunque se publica un bool en lugar de un bool? funciona, pero no es necesario si no está en una carpeta virtual, por lo que no debería tener que hacer esto tampoco.
¿Alguien más ha experimentado esto y hay algo que explique por qué el enlace falla o es solo un error en MVC3?
Si solo se trata de un error, ¿alguien sabe cuáles son los canales ASP.Net MVC adecuados para enviar informes de fallas?
Actualización:
He encontrado que si usted tiene cualquier número de variables anulables en los parámetros de la acción, sólo el primero de ellos será siempre trabajar y todos los demás fallará a poblarse. Alguien sabe si esto es por diseño o un error?
¡Eso funcionó! Excelente. Acaba de agregar la línea que indicó al método Application_Start en Global.asax.cs, tal como se indica. Empezaba a preocuparme que nadie tuviera la respuesta a esta. Esperemos que el error pueda ser resuelto por el equipo de MVC en una futura actualización. Gracias por tu ayuda. –
Impresionante, @Chris. Me alegro que funcionó para usted. Curiosamente, funciona cuando se realiza una depuración local, lo que me hace preguntarme qué versión he instalado en mi servidor de prueba ...:) – Buildstarted
Quizás tengas una versión más nueva de MVC3 que yo. Tendré que verificar si hay una versión más nueva disponible. ¿Lo tenía definitivamente en un directorio virtual como/Virtual/Home/Test? Hay bastantes bits si, si no se hace correctamente, hará que funcione, todo lo cual detallé en mi publicación. –