gpt4 book ai didi

asp.net-mvc - 隐藏未从 View 模型中获取正确的值

转载 作者:行者123 更新时间:2023-12-03 06:22:39 26 4
gpt4 key购买 nike

我有一个多步骤的文件导入过程。我的 View 中有一个隐藏的表单输入,我正在尝试使用 View 模型中的“CurrentStep”进行填充。

<% = Html.HiddenFor(model => model.CurrentStep) %>

CurrentStep 是一个枚举,我总是获得默认值,而不是我提供给 View 模型的值。另一方面,这让我得到了正确的值:

<p><% = Model.CurrentStep %></p>

我意识到我可以手动编码隐藏的输入,但我想知道:我做错了什么?有没有更好的方法来跟踪 POST 之间的当前步骤?

最佳答案

您做错的事情是您试图修改 Controller 操作中 POSTed 变量的值。所以我想你正在尝试这样做:

[HttpPost]
public ActionResult Foo(SomeModel model)
{
model.CurrentStep = Steps.SomeNewValue;
return View(model);
}

和 html 帮助程序(例如 HiddenFor)将始终首先使用 POSTed 值,然后使用模型中的值。

所以你有几种可能性:

  1. 从模型状态中删除值:

    [HttpPost]
    public ActionResult Foo(SomeModel model)
    {
    ModelState.Remove("CurrentStep");
    model.CurrentStep = Steps.SomeNewValue;
    return View(model);
    }
  2. 手动生成隐藏字段

    <input type="hidden" name="NextStep" value="<%= Model.CurrentStep %>" />
  3. 编写一个自定义助手,它将使用您的模型的值,而不是正在发布的值

关于asp.net-mvc - 隐藏未从 View 模型中获取正确的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4837744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com