我的模型是:
public class ContactInfo
{
public IEnumerable<SupplierContact> PriceRequest { get; set; }
public IEnumerable<SupplierContact> OrderConfirmation { get; set; }
public IEnumerable<SupplierContact> Account { get; set; }
}
public class SupplierContact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public string Email { get; set; }
public string MobilePhone { get; set; }
}我的主计长的行动是
public ActionResult EditContactInfo(ContactInfo contactInfo)
{
// not getting any values here..
}视图呈现如下:
@foreach (SupplierContact PriceRequest in Model.PriceRequest)
{
<tr class="">
<td style="text-align: left;" class="csstd-left">@Html.TextBoxFor(m => PriceRequest.Email)</td>
<td class="csstd">@Html.TextBoxFor(m => PriceRequest.MobilePhone)</td>
<td class="csstd">@PriceRequest.Title</td>
<td class="csstd">@PriceRequest.FirstName</td>
<td class="csstd">@PriceRequest.LastName</td>
</tr>
}在我看来,我指的是@model ContactInfo
不过,我可以用
Request.Form.Get("PriceRequest.Email")但是我想使用模型绑定特性。
发布于 2014-09-01 11:26:44
您需要使用for循环(并且需要将集合从IEnumerable更改为IList,以正确索引name属性)。
@for (int i = 0; i < Model.PriceRequest.Count; i++) {
@Html.TextBoxFor(m => Model.PriceRequest[0].Email)
@Html.TextBoxFor(m => Model.PriceRequest[i].MobilePhone)
}或者,您可以为EditorTemplate创建一个SupplierContact,并使用
@Html.EditorFor(m => m.PriceRequest)这将生成类似于
<input name="PriceRequest[0].Email" ...
<input name="PriceRequest[0].MobilePhone" ...
<input name="PriceRequest[1].Email" ...
<input name="PriceRequest[2].MobilePhone" ...等。
发布于 2014-09-01 11:47:21
查看显示和编辑器模板。而不能创建一个名为SupplierContact的视图。如果他看到复杂的类型,MVC会自动知道要显示什么。
因此,在视图文件夹中创建一个文件夹: DisplayTemplates。然后创建一个名为SupplierContact的部分视图。将部分视图的模型设置为SupplierContact。创建用于显示和再次运行应用程序的标签。
要编辑,请创建一个EditorTemplates文件夹。
https://stackoverflow.com/questions/25604703
复制相似问题