在研究这个问题时,我找到了一种绑定列表属性的可靠方法。
请参见此处的示例:
不幸的是,遍历列表并不能提供我需要的所有功能。
此代码示例适用于获取
@foreach (Period period in Model.PeriodList)
{
<div> @Html.TextBoxFor(u => period.PeriodStartNumber) </div>
<div> @Html.TextBoxFor(u => period.PeriodEndNumber) </div>
}
但是这些控件中的值不会绑定在帖子上,而且我无法更新我的模型。
这是框架的限制,因此不可能吗?
答案 0 :(得分:7)
@foreach (Period period in Model.PeriodList)
{
<div> @Html.TextBoxFor(u => period.PeriodStartNumber) </div>
<div> @Html.TextBoxFor(u => period.PeriodEndNumber) </div>
}
这里发生的是,假设您的PeriodList有3个值并且循环执行了3次,现在进入@Html.TextBoxFor(u => period.PeriodStartNumber)
部分会创建一个带有 NAME {{1}的文本框}或者有时PeriodStartNumber
让MVC将值绑定到模型,html元素标记名称必须与您的模型字段匹配(并且您还有3个具有相同名称的文本框 - &gt;如果您想要绑定,这不是很好值得的。所以现在我重新判断你的模型中没有名称为PeriodStartNumber的字段但是你有PeriodList即。在DOM中没有名称为PeriodList的元素与模型属性绑定,因此MVC不会绑定它。
只需在控制器后期操作中保留一个参数,如
period.PeriodStartNumber
您将具有绑定到PeriodStratNumber的值。
注意: public ActionResult SomeAction(Model myModel, string[] PeriodStartNumber )
{
}