2011-11-21 8 views
5

Estoy usando el ayudante Ajax.BeginForm en ASP.NET MVC3 para enviar un formulario que se reemplaza con nuevos valores en el formulario establecer en el servidor. Sin embargo, cuando uso helpers como Html.TextBoxPara obtener los valores que se enviaron, no los valores que inserté en el modelo en el servidor.ASP.NET MVC 3 Ajax.BeginForm y Html.TextBoxFor no refleja los cambios realizados en el servidor

Por ejemplo; Establecí SomeValue en 4 en mi acción y lo muestro en un cuadro de texto. Cambio el valor a 8, pulso enviar y espero que el valor vuelva a ser 4 en el cuadro de texto, pero por alguna razón se mantiene 8. Pero si imprimo SomeValue sin usar Html helpers, dice 4. Alguien tiene alguna pista sobre ¿Que esta pasando?

Mi controlador:

public ActionResult Index(HomeModel model) 
{ 
    model.SomeValue = 4; 
    if (Request.IsAjaxRequest()) 
     return PartialView(model); 
    return View(model); 
} 
public class HomeModel 
{ 
    public int? SomeValue { get; set; } 
} 

Mi vista (por favor, no es que tenga todo el JavaScript necesario en mi diseño de página):

<div id="ajaxtest"> 
@using(Ajax.BeginForm(new AjaxOptions{ InsertionMode = InsertionMode.Replace, 
    UpdateTargetId = "ajaxtest", HttpMethod = "Post" })) { 
    @Html.TextBoxFor(model => model.SomeValue) 
    <input type="submit" value="Update" /> 
} 
</div> 

Respuesta

6

puede utilizar

ModelState.Clear() 

en su método de controlador para hacer que los helpers html usen su modelo modificado. De lo contrario, se utilizan los valores de la forma de presentar

Tenga una mirada en: Asp.net MVC ModelState.Clear

1

en su método POST que tiene que hacer

ModelState.Clear(); 

para reflejar los cambios realizados después de la entrada

Cuestiones relacionadas