EditorFor()用于复杂类型列表(MVC)

 株洲市网商会 发布于 2023-02-13 20:36

我正在尝试为复杂类型的列表创建一个EditorFor().具体来说,下面的"选项"应显示在一个多文本输入中,其中每个选项(字符串)都在一个新行中.但是,我只能在文本框中显示一个选项而不是所有选项....

我的视图模型和类:

public class ItemViewModel
{
    public int itemId { get; set; }

    [UIHint("Option")]
    public List

我的编辑模板:

EditorTemplates\Item.cshtml

@model ItemViewModel
@Html.EditorFor(model => model.Options)

EditorTemplates\Option.cshtml

//Not sure how to dispay the options here

如果我将EditorTemplates更新为:

EditorTemplates\Item.cshtml

@model ItemViewModel
@Html.EditorFor(model => model.Options[0])

EditorTemplates\Option.cshtml

@Html.TextBoxFor(x => x.OptionText)

它将显示文本框中的第一个选项.但是,我想要实现的是在多文本输入中显示所有选项.

有任何想法吗?

2 个回答
  • 只需创建一个视图 Shared/EditorTemplates/Option.cshtml

    @model Option
    
    @Html.TextBoxFor(m => m.Text)
    

    并致电

    @Html.EditorFor(model => model.Options)
    

    EditorFor为您迭代集合.

    2023-02-13 20:38 回答
  • 你几乎拥有它.

    在此EditorTemplates\Option.cshtml添加以下内容:

    @model IEnumerable<Option>
    @foreach(var option in Model)
    {
       @Html.TextBoxFor(m => option.Text)
    }
    

    然后在你的视图中调用它,如下所示:

    @Html.EditorFor(model => model.Options)
    

    如果您没有在初始get中填充选项,则需要在ItemViewModel类中添加它:

    public class ItemViewModel
    {
        public ItemViewModel()
        {
            Options = new List<Option>();
        }
        public int itemId { get; set; }
    
        [UIHint("Option")]
        public List<Option> Options { get; set; }
    }
    

    此构造函数初始化集合:

    public ItemViewModel()
    {
        Options = new List<Options>();
    }
    

    2023-02-13 20:43 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有