Asp.net mvc 3 MVC 3,单选按钮和;模型
假设我有一个模型对象像Asp.net mvc 3 MVC 3,单选按钮和;模型,asp.net-mvc-3,c#-4.0,radio-button,Asp.net Mvc 3,C# 4.0,Radio Button,假设我有一个模型对象像 public class MyModel { public int SomeProperty { get; set; } public int SomeOtherProperty { get; set; } public IList<DeliveryDetail> DeliveryDetails { get; set; } } public DeliveryDetail { public string Description { get
public class MyModel
{
public int SomeProperty { get; set; }
public int SomeOtherProperty { get; set; }
public IList<DeliveryDetail> DeliveryDetails { get; set; }
}
public DeliveryDetail
{
public string Description { get; set; }
public bool IsSelected { get; set; }
}
如何渲染/绑定一组单选按钮(在视图中)?使用以下代码不会将数据发回:
@foreach(var deliveryDetail in @Model.DeliveryDetails)
{
@deliveryDetail.Description
@Html.RadioButtonFor(x => deliveryDetail, false)
}
过帐值需要另一个属性::
public class MyModel
{
public int SomeProperty { get; set; }
public int SomeOtherProperty { get; set; }
public IList<DeliveryDetail> DeliveryDetails { get; set; }
public DeliveryDetail SelectedDetail { get; set; }
}
为了使该功能正常工作,DeliveryDetail必须是Enum。单选按钮列表中的选择是互斥的。只能选择一个值。因此,将单选按钮列表绑定到IEnumerable类型的属性没有任何意义。您可能需要根据视图的要求调整视图模型(在您的示例中,视图显示一个单选按钮列表,其中只能进行一次选择)。如果您使用了复选框列表,那么绑定到IEnumerable属性是有意义的,因为您可以选中多个复选框 因此,让我们调整视图模型以适应这种情况: 型号:
public class MyModel
{
public string SelectedDeliveryDetailId { get; set; }
public IList<DeliveryDetail> DeliveryDetails { get; set; }
}
public class DeliveryDetail
{
public string Description { get; set; }
public int Id { get; set; }
}
视图:
@model-MyModel
@使用(Html.BeginForm())
{
foreach(模型中的var deliveryDetail.DeliveryDetails)
{
@交货细节。描述
@RadioButton(x=>x.selectedDeliveryDetail,deliveryDetail.Id)
}
好啊
}
@foreach(var deliveryDetail in @Model.DeliveryDetails)
{
@deliveryDetail.Description
@Html.RadioButtonFor(x => x.SelectedDetail, deliveryDetail)
}
public class MyModel
{
public string SelectedDeliveryDetailId { get; set; }
public IList<DeliveryDetail> DeliveryDetails { get; set; }
}
public class DeliveryDetail
{
public string Description { get; set; }
public int Id { get; set; }
}
public class HomeController : Controller
{
public ActionResult Index()
{
var model = new MyModel
{
DeliveryDetails = new[]
{
new DeliveryDetail { Description = "detail 1", Id = 1 },
new DeliveryDetail { Description = "detail 2", Id = 2 },
new DeliveryDetail { Description = "detail 3", Id = 3 },
}
};
return View(model);
}
[HttpPost]
public ActionResult Index(MyModel model)
{
// Here you will get the id of the selected delivery detail
// in model.SelectedDeliveryDetailId
...
}
}
@model MyModel
@using (Html.BeginForm())
{
foreach (var deliveryDetail in Model.DeliveryDetails)
{
@deliveryDetail.Description
@Html.RadioButtonFor(x => x.SelectedDeliveryDetailId, deliveryDetail.Id)
}
<button type="submit">OK</button>
}