gpt4 book ai didi

asp.net-mvc - Html.Hidden 字段未设置

转载 作者:行者123 更新时间:2023-12-04 22:05:58 25 4
gpt4 key购买 nike

我的 View 中有一个隐藏字段,如下所示:

using (Html.BeginForm("Action", "Schedule"))
{
@Html.Hidden("Id", Model.Schedule.Id)
...
}

以及一个接收如下信息的操作方法:
public ActionResult AddEventToSchedule(Event NewEvent, Guid Id)
{
// Do something
}

即使 Model.Schedule.Id 不为空,我也会不断收到一个空的 Guid。我检查了 html 源代码,隐藏字段也是一个空的 Guid(使用断点来验证 Model.Schedule.Id 不为空)。

奇怪的是,当我尝试通过如下模型访问 Id 值时,html 隐藏字段已正确填充 guid,但传递给操作方法的模型为空。
public ActionResult AddEventToSchedule(Event NewEvent, ScheduleModel model)
{
// model.Schedule is null!
}

最佳答案

在这个问题的帮助下想出了这个:
MVC3 Model Binding - List to Hidden fields

显然,HTML 助手在检查 Model 之前会检查 ModelState 的值。
我只在将 Id 作为参数添加到操作方法时才看到这种行为的原因是,它调用了模型绑定(bind)器以使用 Id 填充 ModelState。 Id 始终为空 Guid 的原因是因为这是第一次调用操作方法时的值。

我将此行添加到我的操作方法中,现在一切正常:

ModelState.Remove("Id")

关于asp.net-mvc - Html.Hidden 字段未设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992132/

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