我的应用程序发生了一些很奇怪的事情:
我的ViewModel具有以下属性:
public int? StakeholderId { get; set; }
它以部分 View 的形式呈现,如下所示:
<%= Html.Hidden("StakeholderId", Model.StakeholderId) %>
表单被提交,相关的 Controller Action 生成一个id并更新模型,然后返回与更新后的模型相同的 View
我遇到的问题是,即使StakeholderId现在具有值,隐藏字段在第二次呈现的“value”属性中也没有任何内容。
如果我只是自己输出值,它将显示在页面上,因此我可以通过执行以下操作来呈现值:
<input type="hidden" id="StakeholderId" name="stakeholderId" value="<%: Model.StakeholderId %>" />
但是,助手没有获取更新的值,这很奇怪?
(我使用jQuery提交表单并将操作结果呈现到div中,但是我已经检查过,在jQuery执行任何操作之前,返回的html已经是错误的,因此,我认为这与任何事物)
更新
从那以后,我发现我也可以在 Controller 操作返回部分 View 之前清除相关的ModelState键。
最佳答案
帮助程序将首先查找POSTed值并使用它们。在您发布表单时,它将获取ID的旧值。您的解决方法是正确的。