Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC的下拉列表:如何使其工作_C#_Asp.net Mvc_Html.dropdownlistfor - Fatal编程技术网

C# MVC的下拉列表:如何使其工作

C# MVC的下拉列表:如何使其工作,c#,asp.net-mvc,html.dropdownlistfor,C#,Asp.net Mvc,Html.dropdownlistfor,我的模型是: public string Vehicle public DropDownListModel() { List<SelectListItem> items = new List<SelectListItem>(); items.Add(new SelectListItem() { Text = "one", Value = "one" }); items.Add(new SelectListI

我的模型是:

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呈现到DropdOnlist中,但我得到的是

我的看法是:

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

    <input type="submit" name="submit" value="submit" />
    }
我做错了什么。我在这方面花了很多时间,并检查了各种SO问题,但无法解决此问题。

您的车辆列表在哪里初始化? 看起来并没有调用DropDownListModel,即使调用了,它设置的items2是什么

请尝试将此设置为。车辆列表改为在其中。

正在初始化的车辆列表在哪里? 看起来并没有调用DropDownListModel,即使调用了,它设置的items2是什么


请尝试将此设置为。请改为将VehicleList设置为其中。

同意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; }
}

同意Max的意见,车辆列表未初始化。即使将其设置为列表,它仍然不知道值是什么属性,数据是什么。尝试按以下方式更改您的模型:

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; }
}

您可能需要编辑代码,以便更清楚地了解您正在执行的操作。。。但很明显:代码完全按照预期工作,但实际上您使用的是错误的

SelectList并不意味着要使用现有SelectListItems的列表创建。您应该为它提供一个您自己的项目集合,指定这些项目上的属性对于将生成的相应HTML元素的值和名称意味着什么。这段代码之所以有效,是因为您看到了正在创建的实际SelectListItems。你可以简单地把它们放在一个列表或其他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; }
}

您可能需要编辑代码,以便更清楚地了解您正在执行的操作。。。但很明显:代码完全按照预期工作,但实际上您使用的是错误的

SelectList并不意味着要使用现有SelectListItems的列表创建。您应该为它提供一个您自己的项目集合,指定这些项目上的属性对于将生成的相应HTML元素的值和名称意味着什么。这段代码之所以有效,是因为您看到了正在创建的实际SelectListItems。你可以简单地把它们放在一个列表或其他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; }
}

请提供更完整的代码版本。现在我看到一些语法错误。你的代码很不完整。您有没有属性声明的getter和setter。没有指定字符串的代码。是否有原因不重写。ToString方法?抱歉,我添加了缺少的行。它在我的代码中。请提供更完整的代码版本。现在我看到一些语法错误。你的代码很不完整。您有没有属性声明的getter和setter。没有指定字符串的代码。是否有原因不重写。ToString方法?抱歉,我添加了缺少的行。它在我的密码里。