tutorial tag route net mvc for data asp all asp.net-mvc model form-submit html.hiddenfor

asp.net mvc - tag - Pasar un modelo completo en forma de presentación



select asp-for asp-items (5)

Entiendo que puedo usar @Html.HiddenFor(m => m.parameter) y cuando se @Html.HiddenFor(m => m.parameter) el formulario, ese parámetro se pasará al controlador. Mi modelo tiene muchas propiedades.

¿Hay una manera más corta de pasar todo el modelo de una vez al controlador o debo hacerlo uno por uno cada vez?


El modelo completo se publicará si está utilizando un elemento FORM. Sus elementos que usan el Modelo obviamente deben estar dentro del elemento de formulario

También puede POSTAR el formulario usted mismo usando JQuery

Ver este otro problema de pila para eso: jQuery AJAX enviar formulario

Eche un vistazo de cerca a la respuesta por "Alfrekjv"


El modelo se pasará al controlador en su totalidad, pero los valores de las propiedades que no están vinculados por la entrada o los campos ocultos se perderán.

Debe vincular las propiedades del formulario en el lado del cliente o volver a buscar la entidad en el lado del servidor.

Parece que estás pidiendo algo como @Html.HiddenFor(m => m.Model) , y eso no es posible. Lo siento

Una cosa a tener en cuenta, si tiene toneladas de campos ocultos, es posible que esté enviando más datos a la vista de los que realmente necesita. Considere emplear modelos de vista


Esto ya está incorporado. Considere este modelo:

public class MyModel { public string PropertyA { get; set; } public string parameter { get; set; } }

y ahora considera esta acción:

[HttpPost] public ActionResult PostSomeData(MyModel model) { }

MVC aprovechará FormCollection y completará la clase MyModel donde pueda. Si no tiene el PropertyA en el formulario, será null . Pero como tiene una input para la propiedad del parameter , se rellenará.


Para cualquier persona que vea esto, puedes hacer un @ Html.EditorForModel () en un div oculto. También tendría que usar @ Html.EditorFor (model => model.ObjectProperty) para cada propiedad de objeto del modelo.

<div hidden="hidden"> @Html.EditorForModel() @Html.EditorFor(model => model.ObjectProperty) @Html.EditorFor(model => model.ListOfObjectsProperty) </div>


Puede verificar solo las propiedades que desee:

if (this.ModelState.IsValidField("Name")) { // ..... }

en lugar de:

if (this.ModelState.IsValid) { // ..... }