我可能在某个地方犯了个愚蠢的错误。我将感谢你在以下方面的帮助。
我有一个示例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);
}

如果我将textboxfor替换为textbox或displaytextfor,则它可以正常工作。

最佳答案

我相信在设置新值之前,必须在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);
}

07-28 07:46