MVC - 更改帖子视图中模型的值

发布于 2024-10-16 03:24:28 字数 102 浏览 2 评论 0原文

我有一个视图,显示模型中的一些数据。我有提交按钮,onClick 事件应该更改模型的值,并且我传递具有不同值的模型,但 TextBoxFor 中的值保持与页面加载时相同。我怎样才能改变它们?

I have view which displays some data from model. I have submit button which onClick event should change model's value and I pass model's with different values but my values in TextBoxFor stay the same as they were on page load. How can I change them?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

春风十里 2024-10-23 03:24:28

这就是 HTML 帮助程序的工作方式,也是设计使然。他们将首先查看发布的数据,然后查看模型。因此,例如,如果您有:

<% using (Html.BeginForm()) { %>
    <%= Html.TextBoxFor(x => x.Name) %>
    <input type="submit" value="OK" />
<% } %>

您要发布到以下操作:

[HttpPost]
public ActionResult Index(SomeModel model)
{
    model.Name = "some new name";
    return View(model);
}

重新显示视图时,将使用旧值。一种可能的解决方法是从 ModelState 中删除该值:

[HttpPost]
public ActionResult Index(SomeModel model)
{
    ModelState.Remove("Name");
    model.Name = "some new name";
    return View(model);
}

That's how HTML helpers work and it is by design. They will first look in the POSTed data and after that in the model. So for example if you have:

<% using (Html.BeginForm()) { %>
    <%= Html.TextBoxFor(x => x.Name) %>
    <input type="submit" value="OK" />
<% } %>

which you are posting to the following action:

[HttpPost]
public ActionResult Index(SomeModel model)
{
    model.Name = "some new name";
    return View(model);
}

when the view is redisplayed the old value will be used. One possible workaround is to remove the value from the ModelState:

[HttpPost]
public ActionResult Index(SomeModel model)
{
    ModelState.Remove("Name");
    model.Name = "some new name";
    return View(model);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文