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

C# 使用Viewbag绑定动态单选按钮值的模型,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我用razor生成单选按钮。但是,当我提交时,传递的值是 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

我用razor生成单选按钮。但是,当我提交时,传递的值是

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>
}
正在页的控制器方法中分配的

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

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

您直接在RadioButton()中使用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>
}
@foreach(列表)ViewBag.lists.Items中的变量列表)
{
@RadioButton(m=>m.Lists,list,new{id=“list”+Lists.Value})
@列表.文本
}

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

下面的代码应该适合您

@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>
}
@foreach(列表)ViewBag.lists.Items中的变量列表)
{
@RadioButton(m=>m.Lists,list,new{id=“list”+Lists.Value})
@列表.文本
}

按照钱德拉坎特的回答,我走上了正确的道路。然而,他的回答给了我一个错误:

'无法转换类型 “System.Collections.Generic.List”到 '系统.集合.通用.列表''

我必须把我的投成这样

@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>
}
@foreach(在(SelectList)ViewBag.lists中的变量列表)
{
@(m=>m.Lists,Lists.Value,新的{id=“list”+Lists.Value,name=“Lists”,@Value=Lists.Value,@text=Lists.text})
@列表.文本
}

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

在chandrakant的回答之后,它引导我走上了正确的道路。然而,他的回答给了我一个错误:

'无法转换类型 “System.Collections.Generic.List”到 '系统.集合.通用.列表''

我必须把我的投成这样

@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>
}
@foreach(在(SelectList)ViewBag.lists中的变量列表)
{
@(m=>m.Lists,Lists.Value,新的{id=“list”+Lists.Value,name=“Lists”,@Value=Lists.Value,@text=Lists.text})
@列表.文本
}

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

先生,您已经接近了!你在foreach循环中抛出ViewBag,无疑让我走上了正确的道路。我必须投出我的(选择列表)ViewBag.lists。谢谢你的时间和帮助!你很接近,先生!你在foreach循环中抛出ViewBag,无疑让我走上了正确的道路。我必须投出我的(选择列表)ViewBag.lists。谢谢你的时间和帮助!