Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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
C# 模型中每行的MVC razor局部视图单选按钮选择_C#_Asp.net Mvc 4_Razor_Viewmodel_Radiobuttonfor - Fatal编程技术网

C# 模型中每行的MVC razor局部视图单选按钮选择

C# 模型中每行的MVC razor局部视图单选按钮选择,c#,asp.net-mvc-4,razor,viewmodel,radiobuttonfor,C#,Asp.net Mvc 4,Razor,Viewmodel,Radiobuttonfor,我有一个局部视图,其中显示了包含4个数据列的viewmodel列表。我想让用户选择一行并按下按钮发布操作。视图模型如下所示: public class ViewModelSelection { public long SelectedItem { get; set; } public List<ViewModelFromDB> Choices { get; set; } } @model MyApp.ViewModels.ViewModelSelection <

我有一个局部视图,其中显示了包含4个数据列的viewmodel列表。我想让用户选择一行并按下按钮发布操作。视图模型如下所示:

public class ViewModelSelection
{
    public long SelectedItem { get; set; }
    public List<ViewModelFromDB> Choices { get; set; }
}
@model MyApp.ViewModels.ViewModelSelection
<h4>Title</h4>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <table>
        <tr>
            <th></th>
            <th>Name</th>
            <th>MeasureA</th>
            <th>MeasureB</th>
        </tr>
        @foreach (var item in Model.Choices)
        {
            <tr>
                <td>
                    @Html.RadioButton(item.id, Model.SelectedItem)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.measureA)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.measureB)
                </td>
            </tr>
        }
    </table>

    <input type="submit" value="Save" class="" />
}
公共类ViewModelSelection
{
公共长SelectedItem{get;set;}
公共列表选项{get;set;}
}
局部视图如下所示:

public class ViewModelSelection
{
    public long SelectedItem { get; set; }
    public List<ViewModelFromDB> Choices { get; set; }
}
@model MyApp.ViewModels.ViewModelSelection
<h4>Title</h4>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()

    <table>
        <tr>
            <th></th>
            <th>Name</th>
            <th>MeasureA</th>
            <th>MeasureB</th>
        </tr>
        @foreach (var item in Model.Choices)
        {
            <tr>
                <td>
                    @Html.RadioButton(item.id, Model.SelectedItem)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.measureA)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.measureB)
                </td>
            </tr>
        }
    </table>

    <input type="submit" value="Save" class="" />
}
@model MyApp.ViewModels.ViewModelSelection
标题
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
名称
测量
测量B
@foreach(Model.Choices中的var项)
{
@Html.RadioButton(item.id,Model.SelectedItem)
@DisplayFor(modelItem=>item.name)
@DisplayFor(modelItem=>item.measureA)
@DisplayFor(modelItem=>item.measureB)
}
}

我希望将viewmodel的SelectedItem属性设置为所选行的id字段。非常感谢您的建议。

您可以创建具有不同名称的单选按钮,这样它们就可以取消分组(即,您可以选择所有按钮),并且与您的模型没有任何关系。将单选按钮更改为

@Html.RadioButtonFor(m => m.SelectedItem, item.id, new { id = "" })
如果随后使用参数
int-selectedItem
将其发布到控制器方法,则
selectedItem
将包含所选
选项的ID。或者,您的参数可以是
ViewModelSelection model
,在这种情况下
model。SelectedItem
将包含该值

旁注:
new{id=”“}
删除输入的
id
属性,以确保您拥有有效的html(没有重复的
id
属性)