Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 MVC 3,单选按钮和;模型_Asp.net Mvc 3_C# 4.0_Radio Button - Fatal编程技术网

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>
}