【问题标题】:ASP.NET MVC 3 Ajax.BeginForm and Html.TextBoxFor does not reflect changes done on the serverASP.NET MVC 3 Ajax.BeginForm 和 Html.TextBoxFor 不反映在服务器上所做的更改
【发布时间】:2011-11-21 20:17:34
【问题描述】:

我在 ASP.NET MVC3 中使用 Ajax.BeginForm 帮助程序来提交一个表单,该表单用服务器上设置的表单中的新值替换自身。但是,当我使用 Html.TextBoxFor 之类的帮助程序时,我得到的是提交的值,而不是我插入到服务器模型中的值。

例如;我在操作中将 SomeValue 设置为 4 并将其显示在文本框中。我将值更改为 8,点击提交,并希望在文本框中将值更改回 4,但由于某种原因,它保持为 8。但是如果我在不使用 Html 帮助器的情况下输出 SomeValue,它会显示 4。任何人都有一些关于怎么回事?

我的控制器:

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; }
}

我的视图(请不要说我的布局页面中有所有需要的 javascript):

<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>

【问题讨论】:

    标签: ajax asp.net-mvc-3 razor


    【解决方案1】:

    你可以使用

    ModelState.Clear() 
    

    在您的控制器方法中使 html 助手使用您更改的模型。否则他们使用表单提交中的值

    看看:Asp.net MVC ModelState.Clear

    【讨论】:

      【解决方案2】:

      在你需要做的 POST 方法中

      ModelState.Clear();
      

      反映发布后所做的更改

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 2021-04-19
        • 2017-04-09
        • 1970-01-01
        • 2020-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多