剃刀中的动态单选按钮

时间:2012-08-07 15:01:14

标签: asp.net-mvc-3 razor html.radiobuttonlist

我正在使用razor视图引擎,并且在创建radiobutton列表时遇到了一些麻烦。

我在我的视图中填充了一个带有for循环的表格,其中包含我的模型的值。 在每一行,我想要radiobutton。我希望能够只选择一行并从模型中获取相关的项目ID并将其提交到另一个页面。我知道如何发帖。实际上,我使用checkbox实现了这一点。但checkbox的问题在于它允许多项选择。

所以我想我需要使用radiobutton。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

假设您有像这样的ViewModel

public Class CheckOutViewModel
{
  public string SelectedPaymentType { set; get; }
  public IEnumerable<SelectItems> PaymentTypes { set; get; }
}

您要在GET操作方法中设置PaymentTypes集合,并将其发送到强类型为CheckOutViewModel的视图

public ActionResult Checkout()
{
  var vm=new CheckOutViewModel
  vm.PaymentTypes=GetPaymentTypes(); //gets a list of SelectItems
  return View(vm);
}

在你的视图中

@model CheckOutViewModel
@using(Html.BeginForm())
{
  foreach (var paymentItem in Model.PaymentTypes)
  {
    @Html.RadioButtonFor(mbox => mbox.SelectedPaymentType, 
                                              paymentItem.ID.ToString())       
    @paymentItem.Name    
  }
  <input type="submit" value="Save" />
}

假设GetPaymentTypes()方法将为数据库中的记录返回SelectItems列表。

这将为您提供具有相同名称值的Radio按钮(SelectedPaymentType)。所以只能选择一个。

POST操作中,您可以通过选中SelectedPaymentType属性值来读取所选值

[HttpPost]
public ActionResult Checkout(CheckOutViewModel model)
{
  //check the value of model.SelectedPaymentType

}