从viewModel在Asp.net MVC 3上实现Dropdownlist

我是.net和mvc平台的新手,我有很多int字段存储了一些dropdownlist值,由于数据库大小,我创建了字段int类型所以我通过这种方法实现dropdownlist,它可以工作,但我不知道知道这是否是在viewmodel上存储值文本的正确解决方案,这里是示例代码:

我很抱歉我的英语,如果你什么都不懂,请告诉我。

model property.cs

[Required(ErrorMessage = "Bu alan gereklidir!")] [Display(Name = "Şehir"), MaxLength(60)] public int City { get; set; } 

propertymgmtviewModel

  public Property Property { get; set; } public IEnumerable Properties { get; set; } public IEnumerable Cities { get { return new[] { new SelectListItem { Text="--Select One---", Value = "", Selected=true}, new SelectListItem { Text="Chicago", Value = "1"}, new SelectListItem { Text="New York", Value = "2"}, new SelectListItem { Text="Zimbabwe", Value = "3"}, }; } 

用于编辑视图页面的视图:

  @Html.DropDownListFor(model => model.Property.City, new SelectList(Model.Cities,"Value","Text")) 

显示值viewpage:

   @(item.City != null ? Model.Cities.SingleOrDefault(c => c.Value == item.City.ToString()).Text : "")  

如果我是你,我应该为SelectList使用这样的字典键/ displayName:

一个静态成员(因为它是静态的……):

 static Dictionary CitiesDict = new Dictionary() { { -1 , "--Select One---"}, { 0 ,"Chicago"}, { 1 ,"New York"}, { 2 ,"Zimbabwe"}, }; 

下拉列表的一个属性:

 public SelectList Cities { get; set; } 

在构造函数中初始化,如下所示:

 Cities = new SelectList(CitiesDict , "Key", "Value", -1); 

然后在视图中进行编辑:

 @Html.DropDownListFor(model => model.Property.City, Model.Cities) 

并用于显示:

 @(CitiesDict.ContainsKey(Model.City) ? CitiesDict[Model.City] : "") 

我还没有使用过Razor语法(仍然在MVC2上),但我相信这部分是错误的:

 @Html.DropDownListFor(model => model.Property.City, new SelectList(Model.Cities,"Value","Text")) 

您需要告诉视图引擎使用( value属性和与option元素关联的文本)填充select列表的value ,但我不知道正确的MVC3语法来帮助您修复它。 希望别人能……