我有一个主视图(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调用后不会从模型中更改为新值?
提前致谢