asp.net-mvc - 如何在 ASP.Net MVC 的 EditorTemplates 中显示一个 RadioButtons 组(3)

标签 asp.net-mvc radio-button mvc-editor-templates

我有一个项目列表,我希望用户能够从中输入一些值,选择一个 但是 EditorTemplate 生成的单选按钮的名称类似于“Item[x].SelectedItemId”,因此它们完全彼此独立,我无法获取值...

让我们来展示一些代码。 型号:

public class FormModel
{
    public List<ItemModel> Items { get; set; }
    public int SelectedItemId { get; set; }
}

public class ItemModel
{
    public int ItemId { get; set; }
    public string ItemName { get; set; }
    public string SomeString { get; set; }
}

View :

@model FormModel
@using (Html.BeginForm())
{ 
    @Html.EditorFor(m => m.Items)
}

编辑器模板:

@model ItemModel
@Html.RadioButton("SelectedItemId", Model.ItemId)
@Model.ItemName <br/>
@Html.TextBoxFor(m => m.SomeString) <br/>

更新

这就是我想要的:

What I want

这就是我得到的:

what I get

因此,FormModel.SelectedItemId 永远不会获取任何单选按钮的值。

我做错了什么?

最佳答案

看来您知道必须将单选按钮的名称设置为相同才能使其正常工作。但是,当您在编辑器模板中使用代码行 @Html.RadioButton("SelectedItemId", Model.ItemId) 执行此操作时,MVC 3 将考虑您位于编辑器模板中对于项目和前置项目[n]。

这将创建一个类似于 name="Items[0].SelectedIndex" 的名称。如果不是因为下一个单选按钮是 `name="Items[1].SelectedIndex",那就没问题了。

解决此问题的一种方法是不使用编辑器模板并使用 foreach 循环。这是我能够运行的一些代码。我确认模型绑定(bind)适用于 SelectedIndex

    @model FormModel

    @{
        ViewBag.Title = "Index";
    }

    @using (Html.BeginForm())
    {
        foreach (var item in Model.Items)
        {
            @Html.RadioButtonFor(x => x.SelectedItemId, item.ItemId)
            @item.ItemName <br/>
            @Html.TextBoxFor(m => item.ItemName) <br/>
        }

        <input type="submit" value = "submit" />
    }

关于asp.net-mvc - 如何在 ASP.Net MVC 的 EditorTemplates 中显示一个 RadioButtons 组(3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7205090/

相关文章:

asp.net-mvc - asp.net mvc 复选框不一致

c# - 以一种形式处理 2 个提交按钮

c# - 将现有的 Microsoft.AspNet.Identity DB (EF 6) 迁移到 Microsoft.AspNetCore.Identity (EF Core)

c# - wpf 单选按钮已选中 "Index was out of range. Must be non-negative and less than the size of the collection."

html - Liferay 复选框/单选样式

asp.net-mvc - 编辑器模板 LabelFor - 显示值而不是名称

asp.net - 如何为 Bootstrap 复选框创建一个 EditorTemplate?

c# - 为什么要使用 MVC 3 模板?

c# - 将字符串数据库值与两个以上的词进行比较

jquery 无法以编程方式设置 PrettyCheckable 插件单选按钮