加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 如何在ASP.Net MVC中的EditorTemplates中显示一

发布时间:2020-12-16 10:01:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个项目列表,我希望用户能够输入一些值选择一个 但是EditorTemplate生成的单选按钮被命名为“Item [x] .SelectedItemId”,因此它们完全相互独立,我无法获得价值…… 我们去展示一些代码吧. 该模型: public class FormModel{ public ListItemModel Item
我有一个项目列表,我希望用户能够输入一些值选择一个
但是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; }
}

风景:

@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/>

UPDATE

这就是我要的:

这就是我得到的:

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

我究竟做错了什么?

解决方法

看起来好像你知道将单选按钮的名称设置为相同是使它们工作所必需的.但是,当您使用代码行@ Html.RadioButton(“SelectedItemId”,Model.ItemId)在编辑器模板中执行此操作时,MVC 3将考虑您在项目和前置项目的编辑器模板中[n ].

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

解决此问题的一种方法是不使用编辑器模板并使用foreach循环.这是一些我能够实现功能的代码.我确认模型绑定适用于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" />
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读