使用Html.Editors时,Ajax.BeginForm不会替换自身

时间:2014-01-30 15:29:28

标签: jquery ajax asp.net-mvc-4 asp.net-ajax

我有一个主视图(Index.cshtml)

@model AjaxTests.Models.MainModel
<div id="mainDiv">
    @Html.Partial( "AjaxFormPartial", Model )
</div>

和AjaxFormPartial.cshtml:

@model AjaxTests.Models.MainModel

@using( Ajax.BeginForm( "AjaxFormAction", "AjaxForm", new AjaxOptions() { HttpMethod = "Post", UpdateTargetId = "mainDiv" } ) )
{
    @Html.HiddenFor( m => m.Id, new { value = Model.Id} );
    @Html.TextBoxFor( m => m.Name, new { value = Model.Name} );
    @Html.TextBoxFor( m => m.Description, new { value = Model.Description} );
    <input type="submit" value ="Send" />
}

ajax触发的控制器方法是:

public ActionResult AjaxFormAction( MainModel model )
{
    model.Name += "XYZ";
    model.Description += "ABC;
    return PartialView( "AjaxFormPArtial", model } );
}

和型号:

public class MainModel
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}

所以ajax应该替换自己=再次使用从控制器模型中传递的新值来渲染AjaxFormPartial。 问题是,编辑器中的值保持不变。我在AjaxFormPartial中放置断点,我可以看到该模型已更改,但在浏览器值保持不变。 有意思的是,当我使用普通的p,h1和类似的html标签值而不是@Html.TextBoxFor时,它们正在发生变化。 更多 - 当在调试模式下调试器在断点处停止时,我向下移动“黄色箭头”到下一行,绕过第一个TextBox对于视图更改=不显示此错过的文本框,但第二个显示UNCHANGED值。

有人可以解释一下,为什么文本框中的值在ajax调用后不会从模型中更改为新值?

提前致谢

0 个答案:

没有答案