回发后TextBoxFor没有刷新

时间:2013-12-10 09:24:28

标签: c# asp.net-mvc

我可能在某个地方犯了一个愚蠢的错误。我将非常感谢您的帮助 我有一个带有单个可编辑字段的MVC3应用程序示例,该字段使用TextBoxFor方法显示给用户。在索引(POST)操作中,我更改了值,但它仍然保持不变。我究竟做错了什么?

我的代码:
型号:

public class TestModel
{
    public string Name { get; set; }
}

查看:

using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.Name)
    <input type="submit" />
}

控制器:

public ActionResult Index()
{
    return View("Index", new TestModel() { Name = "Before post" });
}

[HttpPost]
public ActionResult Index(TestModel model)
{
    model.Name = "After post";
    return View("Index", model);
}

如果我用TextBox或DisplayTextFor替换TextBoxFor,那么它可以正常工作。

1 个答案:

答案 0 :(得分:12)

我相信在设置新值之前,您必须在ModelState.Clear()操作中调用[HttpPost]

根据这个答案,有一个非常好的解释:How to update the textbox value @Html.TextBoxFor(m => m.MvcGridModel.Rows[j].Id)

也是这样:ASP.NET MVC 3 Ajax.BeginForm and Html.TextBoxFor does not reflect changes done on the server 虽然您似乎没有使用Ajax.BeginForm,但行为是相同的。

包括@Scheien建议的一个例子:

[HttpPost]
public ActionResult Index(TestModel model)
{
    ModelState.Clear(); 
    model.Name = "After post";
    return View("Index", model);
}