Tengo una nueva aplicación MVC 4 con una vista/controlador bastante básico. El modelo asociado contiene un par de propiedades que he asignado a Hidden campos de formulario. Cuando la página se representa por primera vez (, por ejemplo, a través de HttpGet Action), todo se ve bien. Pero cuando se ingresa el formulario seleccionando el botón Enviar, el Modelo resultante presentado a la Acción ya no tiene configurados los valores del campo Oculto. Aquí hay un recorrido por los detalles.Campos de formulario ocultos que no aparecen en el modelo MVC después de la devolución posterior
Aquí es una muestra de la Modelo:
public class Application
{
public bool ShowSideBars { get; set; }
}
Aquí es el controlador inicial * Acción * (que parece funcionar bien):
[HttpGet]
public ActionResult Application()
{
var model = Request.ParseFromQueryString<Application>();
model.ShowSideBars = true;
return View(model);
}
Esto se asigna al Ver de la siguiente manera:
<fieldset>
@Html.HiddenFor(m => m.ShowSideBars)
...
</fieldset>
Esto se traduce en la siguiente margen de que pudiera ser emitida dentro del conjunto de campos:
<input data-val="true" data-val-required="The ShowSideBars field is required." id="ShowSideBars" name="ShowSideBars" type="hidden" value="True" />
Nota: estoy seguro que desearía saber qué MVC ha decidido añadir el'. .. se requiere campo 'contenido cuando no lo marca como se requiere, pero eso es para otra pregunta
Aquí está el Actio n que se invoca cuando se envía el formulario. En este punto, la propiedad antes mencionada ya no se establecerá en 'true'.
[HttpPost]
public ActionResult Application(Application application)
{
// Other work done here
return View(application);
}
En la actualidad, no hay carpetas de modelos personalizados. Además, he probado algunos otros tipos de datos y estoy viendo lo mismo.
¿Alguien puede explicar por qué los valores ocultos del formulario no se devuelven? ¿Estoy haciendo todo mal?
El '-val-required' datos se rindió porque el modelo tipo es 'bool'. Bools por defecto son obligatorios, tienen que ser verdaderos o falsos. Si no desea ver el valor de datos requerido, convierta la propiedad en 'bool?'. – danludwig
Como anotación adicional, las anotaciones de datos agregan 'requerido' a cualquier tipo que no admite nulos. Ints y Bools se marcarán automágicamente según sea necesario. –
@danludwig ¡Excelente idea! Gracias. Esto evitará una pequeña hinchazón en el tamaño total de la página. – JoeGeeky