使用Viewbag绑定动态单选按钮值的模型



我正在使用剃刀生成单选按钮。然而,当我提交时,传递的值是

System.Web.Mvc.SelectList

而不是像"1234"这样的实际字符串值(这正是我所期望的(

这是我的html代码

@foreach (var lists in ViewBag.Lists)
{
<span class="nowrap">
@Html.RadioButtonFor(m => m.Lists, (SelectList)ViewBag.Lists, new { id = "list" + lists.Value)
<label for="list@(lists.Value)" style="color:#808080;font-weight:100">@lists.Text</label>
</span>
}

我试过用lists.Value替换(SelectList)ViewBag.Lists,但它会用吠叫

错误CS1929"HtmlHelper"不包含的定义"RadioButtonFor"和最佳扩展方法重载'InputExtensions.RadioButtonFor(HtmlHelper,Expression>,object,object('需要"HtmlHelper"类型的接收器

这是存储库方法

public SelectList GetListsByLocation(int locationId)
{
using (var ctx = new V4Entities())
{
var query = (from l in ctx.FooBarConfig
where l.IsActive
where l.LocationId == locationId
orderby l.ServiceTypeId, l.Name
select l);
return new SelectList(query.ToList(), "UplistConfigId", "Name");
}
}

正在页面的控制器方法中分配的。

ViewBag.Lists = _upListConfigRepo.GetListsByLocation(TnuSession.Current.LocationId);

我的问题是,我应该为Html.RadioButtonFor的第二个参数传递什么参数,以便在提交时收到正确的值?

根据chandrakant的回答,我走上了正确的道路。然而,他的回答给了我一个错误:

'无法转换类型'System.Collections.Generic.List<\TheNextUp.Model.UpListConfig>'到'System.Collections.Generic.List<\System.Web.Mvc.SelectListItem>''

不得不将我的铸造成这样

@foreach (var lists in (SelectList)ViewBag.lists)
{
<span class="nowrap">
@Html.RadioButtonFor(m => m.Lists, lists.Value, new { id = "list" + lists.Value, name = "Lists", @value = lists.Value, @text = lists.Text })
<label for="list@(lists.Value)" style="color:#808080;font-weight:100">@lists.Text</label>
</span>
}

然后,RadioButtonFor的第二个参数需要是lists.Value,以便传递该单选按钮的值。

您直接在Radiobuttonfor((中使用ViewBag.List变量,这是错误的

下面的代码应该为你工作

@foreach (var lists in (List<SelectListItem>)ViewBag.lists.Items)
{
<span class="nowrap">
@Html.RadioButtonFor(m => m.Lists, lists, new { id = "list" + lists.Value })
<label for="list@(lists.Value)" style="color:#808080;font-weight:100">@lists.Text</label>
</span>
}

最新更新