type side net mvc form data create asp asp.net-mvc-2 modelstate strongly-typed-helper

asp.net mvc 2 - side - asp.net-mvc2-Ayudantes fuertemente tipados que no usan Model?



validation asp net mvc (1)

Al utilizar helpers fuertemente tipados en MVC2, los valores del campo de entrada no se toman de la propiedad Modelo cuando se realiza una publicación. Es este comportamiento predeterminado?

(fuertemente tipado) vista con ayudantes fuertemente tipados:

<div class="editor-label"> <%: Html.LabelFor(model => model.Name) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Name) %> <%: Html.ValidationMessageFor(model => model.Name) %> </div> <div class="editor-label"> <%: Html.LabelFor(model => model.Price) %> </div> <div class="editor-field"> <%: Html.TextBoxFor(model => model.Price) %> <%: Html.ValidationMessageFor(model => model.Price) %> </div>

Acción del controlador para: / Producto / Edición / 5

public ActionResult Edit(int id) { var p = new Product(); p.Name = "product 1"; p.Price = "100"; return View(p); }

Salida de HTML:

<div class="editor-label"> <label for="Name">Name</label> </div> <div class="editor-field"> <input id="Name" name="Name" type="text" value="product 1" /> </div> <div class="editor-label"> <label for="Price">Price</label> </div> <div class="editor-field"> <input id="Price" name="Price" type="text" value="100" /> </div>

Acción del controlador para: / Producto / Edición / 5

[HttpPost] public ActionResult Edit(Product p) { p.Name = "prrrrrrd 2"; return View(p); }

Salida de HTML después de la publicación del formulario (debajo esperaría que el valor de la entrada con id = "Nombre" sea "prrrrrrd 2. ¿De dónde obtiene el helper fuertemente tipificado su valor?"):

<div class="editor-label"> <label for="Name">Name</label> </div> <div class="editor-field"> <input id="Name" name="Name" type="text" value="product 1" /> </div> <div class="editor-label"> <label for="Price">Price</label> </div> <div class="editor-field"> <input id="Price" name="Price" type="text" value="100" /> </div>


Al utilizar helpers fuertemente tipados en MVC2, los valores del campo de entrada no se toman de la propiedad Modelo cuando se realiza una publicación. Es este comportamiento predeterminado?

Sí, primero se toman del ModeloEstado y luego del Modelo. Si tiene la intención de realizar algunas modificaciones en el modelo en su acción POST, primero debe eliminarlas de ModelState. Por ejemplo:

[HttpPost] public ActionResult Edit(Product p) { ModelState.Remove("Name"); p.Name = "prrrrrrd 2"; return View(p); }