[英]MVC4 How to Pass a model propery list to Action from view
我正在尝试将具有列表属性的模型从视图传递到后期操作。 该列表在发布后返回空值,但是我们需要包含新项目的列表来更新其信息。 我的模型如下所示:
public class Person()
{
internal string Name {get;set;}
internal decimal Age {get;set;}
internal List<int> Rate {get;set;}
}
该视图将使用其当前信息填充,并且我们使用foreach来遍历列表,并产生用于编辑功能的文本框。 当该人在编辑所需的值后点击“提交”时,该视图将转到[HttpPost]操作,但该值为空。
该视图被@using(Html.BeginForm(Model))包围,并且在提交时,将模型传递给post操作,但是列表为null。 填充所有其他值。
有任何想法吗? PS,我们正在使用c#和Razor View Engine,抱歉,但清单仍未传递给模型,这里是4循环。
@{ int i = 0;}
<table>
@for (i = 0; i < Model.VendorContracts.Count; i++ )
{
if (i == 0)
{
<tr>
<th>
Vendor Contracts
</th>
<th>
Effective Date
</th>
</tr>
}
if (i < 5)
{
<tr>
<td>@Model.VendorContracts[i]
</td>
<td>@Html.TextBoxFor(model => model.EffectiveDates[i])</td>
</tr>
}
if (i == 5 || i == 10 || i == 15 || i == 20)
{
@:</table>
@:<table>
}
if (i >= 5)
{
if (i == 5 || i == 10 || i == 15 || i == 20)
{
<tr>
<th>Vendor Contracts
</th>
<th>
Effective Date
</th>
</tr>
}
<tr>
<td>
@Model.VendorContracts[i]
</td>
<td>@Html.TextBoxFor(model => model.EffectiveDates[i])</td>
</tr>
}
}
</table>
我可以给你部分答案。 要加载列表项,以便将它们返回到HttpPost上,您需要在视图中执行此操作
for(int idx = 0;idx < Model.Rate.Count;idx++)
{
@Html.TextBox("Foo", Model.Rate[idx])
}
关键思想是@Html.TextBox("Foo", Model.Rate[idx])
,在引用Rate列表项时必须使用索引器。 这样,当您回发时,MVC模型绑定程序将能够选择列表项,包括对这些项的任何更改。
至于选择用户添加的新项目,我不确定。 也许另一个SO用户可以提供帮助? 但希望我的回答有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.