gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 20:27:45 26 4
gpt4 key购买 nike

我有一个项目列表,我希望用户能够从中输入一些值,选择一个但是 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com