Asp.net 为mvc 4中dropdownlist中的选项赋值

Asp.net 为mvc 4中dropdownlist中的选项赋值,asp.net,asp.net-mvc-4,razor,dropdownlistfor,Asp.net,Asp.net Mvc 4,Razor,Dropdownlistfor,我是MVC4的新手,所以这听起来可能很琐碎 下面是一段razor代码: @Html.DropDownListFor(model => model.ResidentTypes[i].LevelID, new SelectList(Model.LevelOfTraining, "Value", "Text", Model.ResidentTypes[i].LevelID), "--Select--", new { @style = "" }) 它显示一个下拉列表,其中包含一些选项和一个“”

我是MVC4的新手,所以这听起来可能很琐碎

下面是一段razor代码:

 @Html.DropDownListFor(model => model.ResidentTypes[i].LevelID, new SelectList(Model.LevelOfTraining, "Value", "Text", Model.ResidentTypes[i].LevelID), "--Select--", new { @style = "" })
它显示一个下拉列表,其中包含一些选项和一个“”--选择--“
但是select没有指定值。你能告诉我如何将值作为0添加到“--选择--”选项吗?

你可以使
LevelID
为null-
int?
;我在
SelectList
类上使用扩展方法

public static class SelectListExtension {
  public static SelectList Prepend(this SelectList list, string text, string value, bool selected = false) {
    if (list == null) {
      throw new ArgumentNullException("list");
    }

    return new SelectList(new SelectListItem[] { 
      new SelectListItem { 
        Selected = selected, 
        Text = text, 
        Value = value 
      }
    }.Union(list), "Value", "Text");
  }

  public static SelectList Default(this SelectList list, string text, string value = null) {
    if (list == null) {
      throw new ArgumentNullException("list");
    }

    return list.Prepend(text, value, true);
  }

  public static SelectList Default(this SelectList list) {
    if (list == null) {
      throw new ArgumentNullException("list");
    }
    // localization here
    string defaultMessage = "-- SELECT --";
    return list.Default(defaultMessage);
  }
}
这可能对你有帮助