我正在使用razor
视图引擎,并且在创建radiobutton
列表时遇到了一些麻烦。
我在我的视图中填充了一个带有for
循环的表格,其中包含我的模型的值。
在每一行,我想要radiobutton
。我希望能够只选择一行并从模型中获取相关的项目ID并将其提交到另一个页面。我知道如何发帖。实际上,我使用checkbox
实现了这一点。但checkbox
的问题在于它允许多项选择。
所以我想我需要使用radiobutton
。任何帮助将不胜感激。
答案 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
}