【问题标题】:How to create dynamic DropDownList with several complex types? ASP.NET MVC 3如何创建具有多种复杂类型的动态 DropDownList? ASP.NET MVC 3
【发布时间】:2012-11-07 15:31:49
【问题描述】:

伙计们。我有这些 ViewModel:

public class CandidateViewModel
{
    public string Name { get; set; }
    public IList<CourseViewModel> Courses { get; set; }
    //...
}

public class OptionViewModel
{
    public int Number { get; set; }
    public string Description { get; set; }
    //...
}

public class CourseViewModel
{
    public string Name { get; set; }
    public string SelectedCourse { get; set; }
    public IList<OptionViewModel> Options { get; set; }

    public CourseViewModel(int options)
    {
        Options.Add(new OptionViewModel(-1, string.Empty));
        for (int count = 1; count <= options; ++count)
            Options.Add(new OptionViewModel(
                count, string.Format("Option {0}", count)));

        Options.Add(new OptionViewModel(0, "Don't want it"));
    }
}

好吧,我想创建一个 DropDownLists 的数量等于候选视图模型中的课程数量。每个下拉列表都应作为 CourseViewModel 实例的 OptionViewModel 列表的选项。我需要这样的最终结果:

<select name="Course1">
    <option value="-1"></option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="0">Don't want it</option>
</select>

<select name="Course2">
    <option value="-1"></option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="0">Don't want it</option>
</select>

但是,我的 .cshtml 页面将 CandidateViewModel 作为模型,我无法通过 Razor 的“Html.DropDownListFor”创建。你能帮帮我吗?

非常感谢你们,伙计们!

【问题讨论】:

    标签: c# asp.net-mvc-3 dynamic razor viewmodel


    【解决方案1】:

    您可以使用使用所需类型的partial view

    您也可能无法绑定此模型。请看这篇帖子MVC Model Binding to List of Complex Objects

    【讨论】:

    • 谢谢,伊斯特恩。使用部分视图,我很容易创建了 DropDownLists。但是,我在 CourseViewModel 上有“SelectedOption”属性(上面的代码是错误的,顺便问一下,如何修复它?)。当我通过一些操作检索我的模型时,“SelectedOption”值为空。它不等于从我的 DropDownList 中选择的值吗? @Html.DropDownListFor(c => c.SelectedCourse, new SelectList(Model.Options, "Number", "Description", Model.SelectedCourse)) @Model.Name 谢谢!!
    • @Kiwanax,正如我所说,带有复杂对象列表的模型可能很棘手。从仅使用一门课程的更简单模型开始,查看是否一切正常,然后冒险查看课程列表。 Action 接收到的所有数据都必须在表单中,在调试 mvc 绑定之前,请使用浏览器检查发布的数据并查看是否存在缺失值。
    • 不错。我会在这里试试。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-21
    • 1970-01-01
    • 2021-02-24
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多