【发布时间】:2019-11-28 00:43:47
【问题描述】:
我在 for 循环内使用 HTML 帮助程序 HiddenFor 将复杂对象的一些属性绑定回我的模型。
如果我询问视图,我可以看到隐藏字段中的值设置正确,但是当我提交表单时,控制器中的值是 null。
查看
@for (int i = 0; i < Model.CustomerSearchResponses.customers.Count; i++)
{
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].name.first)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].name.last)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].name.company)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.line1)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.line2)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.city)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.stateProvince)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.postalCode)
@Html.HiddenFor(m => m.CustomerSearchResponses.customers[i].address.country)
}
<input id="CustomerSearchResponses_customers_0__name_first" name="CustomerSearchResponses.customers[0].name.first" type="hidden" value="BRIAN">
型号
public class RequestViewModel
{
**some other props**
public CustomerSearchResponse CustomerSearchResponses { get; set; }
}
控制器
[HttpPost]
public ActionResult QASAddress(RequestViewModel model, string previousButton, string submitButton)
{
// Do Stuff
}
为了篇幅,并非所有隐藏字段都在此处发布,但它们都设置正确。当我发布表单时,CustomerSearchResponses.customers[i] 对象在那里,但 name 和 address 对象为空。
【问题讨论】:
-
您能否发布视图模型结构,以及您要发布到的控制器操作的签名
-
在渲染视图后,还发布一个 HTML 页面源示例,显示隐藏字段。
-
问题已被编辑。
-
谢谢@DevNoob。您的 RequestViewModel 代码 sn-p 具有属性“CustomerSearchResponse”,但您的视图引用的是 CustomerSearchResponses(复数形式)。您可以尝试用 CustomerSerarchResponses 集合替换 CustomerSearchResponse。
-
@sam 抱歉,当我拼命想找到解决方案时,这可能是一个错字。属性名称确实匹配,我已经更新了我的问题中的属性以匹配。
标签: c# asp.net-mvc razor