我有课程联系方式:
public class Contact
{
public int Id { get;set; }
public Boolean DefaultYN {get;set; }
public string AdrType { get; set; }
public string Street {get; set; }
public string Town {get; set; }
public string HouseNr { get; set; }
public string PostCd { get; set; }
}
我有一个VieModel
public class ContactVm
{
public Contact SelectedContact { get; set; }
public Contact SelectedInvoiceContact { get;set; }
public List<Contact> ContactList { get; set; }
}
我有一个强烈的典型视图
@model MvcBeaWeb.Models.ContactVm
<!-- Address Div -->
@using (Html.BeginForm("Index", "OrderSummary"))
{
<div id="deliveryAddressTab" class="deliveryAddressTab" style="margin: 10px 3px;">
@foreach (var item in Model.ContactList)
{
<div style="display: inline-block; float: left;">
@Html.RadioButtonFor(x => x.SelectedContact, item, new {@checked = true ,id = "item" + item.Id })
</div>
<div id="@item.Id" style="float: left; margin-left: 10px; font-weight: 500;">
<span class="spnTown">@item.PostCd @item.Town</span>
</div>
}
</div>
}
所以你看到来自ContactList的每个Contact
我为模型的SelectedContact
属性创建了一个单选按钮。但是,当我单击输入按钮并且导航到我的OrderSummary控制器的索引操作时,这是复杂类型(Contact对象)
public ActionResult Index (ContactVm contactVm)
{
/* .... */
}
我的contactVm参数为空,模型绑定似乎无法正常工作
答案 0 :(得分:1)
Model Binder没有足够的信息来补充Contact类。对于ViewModel的每个属性,需要在请求中提供一个值(例如表单,查询字符串等)以绑定整个模型,因此在您的示例中它将无法工作。
我假设您正在从存储中加载联系人列表。 (例如DB)
我会在viewModel上为SelectedContactId公开一个属性,并将其用作 RadioButtonFor 方法,并使用列表中联系人的ID作为单选按钮的值:
Html.RadioButtonFor(m => m.SelectedContactId, item.Id )
然后,当您加载View模型时,可以从存储中加载联系人,并找到按ID分类的联系人