1

我的模型是:

public string Vehicle

    public DropDownListModel()
    {
        List<SelectListItem> items = new List<SelectListItem>();
        items.Add(new SelectListItem() { Text = "one", Value = "one" });
        items.Add(new SelectListItem() { Text = "two", Value = "two" });
        SelectList items2 = new SelectList(items);
        VehicleList = items2;
    }

    public string Vehicle
    {
        get;
        set;
    }

    public SelectList VehicleList
    {
        get;
        set;
    }

}

我想将 selectList 呈现为 dropdwonlist 但我得到的是

在此处输入图像描述

我的观点是这样的:

    @using ( Html.BeginForm("Post","Guestbook"))
    {
     @Html.Label("Name") @Html.DropDownListFor(m=> m.Vehicle,Model.VehicleList)<br />

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

我究竟做错了什么。我在这方面花了很多时间并检查了各种 SO 问题,但无法解决这个问题。

4

3 回答 3

2

VehicleList的初始化在哪里?它看起来不像DropDownListModel被调用,即使它是 -items2它设置了什么?

尝试设置this.VehicleList在那里。

于 2013-08-16T16:15:35.223 回答
2

同意 Max 的 VehicleList 没有被初始化。即使您将其设置为列表,它仍然不知道值是什么属性以及数据是什么。尝试像这样更改您的模型:

public class DropDownListModel
{
    public DropDownListModel()
    {
        List<SelectListItem> items = new List<SelectListItem>();
        items.Add( new SelectListItem() { Text = "one", Value = "one" } );
        items.Add( new SelectListItem() { Text = "two", Value = "two" } );
        VehicleList = new SelectList( items, "Value", "Text" );
    }

    public string Vehicle { get; set; }

    public SelectList VehicleList { get; set; }
}
于 2013-08-16T16:19:07.593 回答
0

您可能想要编辑代码以更清楚地说明您在做什么......但这很明显:代码完全按预期工作,但您实际上使用错了。

SelectList 并不是要使用现有 SelectListItems 的列表来创建的。您应该向它提供您自己的项目的集合,指定这些项目的哪些属性用于将生成的相应 HTML 元素的值和名称。该代码有效(有点),因为您看到的是您正在创建的实际 SelectListItems。您可以简单地将它们粘贴在 List 或其他 IEnumerable 中,它也可以工作。但不要将这两种方法结合起来。

给定模型类,这是一个工作示例:

public class Vehicle
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class Model
{
    public int SelectedId { get; set; }
    public IEnumerable<Vehicle> Items { get; set; }
}

以下 Razor 代码有效:

@Html.DropDownListFor(m => m.SelectedId, new SelectList(Model.Items, "Id", "Name"))
于 2013-08-16T16:25:00.300 回答