C# 选择控制器中的下拉项

C# 选择控制器中的下拉项,c#,html,asp.net-mvc,C#,Html,Asp.net Mvc,你好 在我看来,我有这样一个下拉列表: <div class="form-group row"> @Html.LabelFor(model => model.Colour, new { @class = "col-lg-2 col-md-2 col-sm-2 col-xs-2" }) <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9"> @Html.DropDownListFor(mode

你好

在我看来,我有这样一个下拉列表:

<div class="form-group row">
    @Html.LabelFor(model => model.Colour, new { @class = "col-lg-2 col-md-2 col-sm-2 col-xs-2" })
    <div class="col-lg-9 col-md-9 col-sm-9 col-xs-9">
        @Html.DropDownListFor(model => model.Colour, new SelectList(Model.VehicleColour, "Value", "Text", Model.Colour), new { id = "Colour", @class = "btn dropdown-toggle btn-default" })
    </div>
</div>
汽车颜色

车辆模型

你能帮我解决这个问题吗?

你可以这样试试

在控制器中你应该写

List<VehicleColour> lstColour = null;
lstColour = GetVehicleColour();
ViewBag.lstColour = new SelectList(lstColour , "Colour", "Colour", selected Colour);

当绑定到模型属性时,设置SelectListItem的Selected属性没有意义,DropDownListFor方法会在内部生成一个新的IEnumerable。颜色值决定选择的内容-如果它与选项值之一匹配,则将选择该选项。不要在选择列表中添加“请选择车辆颜色”选项-使用接受标签选项的其中一个重载,并且没有必要从第一个选项生成第二个相同的选择列表。视图应为@Html.DropDownListForm=>m.color,Model.VehicleColour,请选择车辆颜色,新建{@class=btn下拉切换btn default}我已删除选定的属性,但它仍然没有选择选定的值,这意味着您的设置的值与用于生成选项的method.Id值之一不匹配。model.Color与方法匹配。id@StephenMuecke这很好用。我在我的许多项目中都使用了这个。所以请不要在没有确认的情况下判断任何人的代码。很明显,谁投了票,谁也得到了答案,这就是为什么他/她投了票。如果你有答案,请写在这里。不要评论任何人的答案。它甚至不会编译,更不用说工作了!这与问题无关。广告建议使用DropDownList而不是像OP所做的那个样使用强类型的DropDownListFor方法是很糟糕的。
private IEnumerable<SelectListItem> GetVehicleColour()
{
    var colours = new List<SelectListItem>();
    var colour = new SelectListItem()
    {
        Value = "0",
        Text = "Please select a Vehicle Colour",
        Selected = true
    };

    /* Get Colour values fron database */

    foreach (ColorObject method in dbList)
    {
        colour = new SelectListItem()
        {
            Value = method.Id.ToString(),
            Text = method.Description,
            Selected = false
        };
        colours.Add(colour);
    }
    return colours;
}
[Required]
[Display(Name = "Colour ")]
[Range(1, long.MaxValue, ErrorMessage = "Please select a Vehicle Colour")]
public long? Colour { get; set; }

public IEnumerable<SelectListItem> VehicleColour { get; set; }
List<VehicleColour> lstColour = null;
lstColour = GetVehicleColour();
ViewBag.lstColour = new SelectList(lstColour , "Colour", "Colour", selected Colour);
 @Html.DropDownList("lstColour", null, new { id = "Colour", @class = "btn dropdown-toggle btn-default" })