c0d*_*ter 0 c# asp.net asp.net-mvc asp.net-mvc-3
我是.net和mvc平台的新手,我有很多int字段存储了一些下拉列表值,由于数据库大小,我创建了字段int类型所以我通过这种方法实现了dropdownlist,它可以工作,但我不知道知道在viewmodel上存储值的文本是否是正确的解决方案,这里是示例代码:
我很抱歉我的英语,如果你什么都不懂,请告诉我.
model property.cs
[Required(ErrorMessage = "Bu alan gereklidir!")]
[Display(Name = "?ehir"), MaxLength(60)]
public int City { get; set; }
Run Code Online (Sandbox Code Playgroud)
propertymgmtviewModel
public Property Property { get; set; }
public IEnumerable<Property> Properties { get; set; }
public IEnumerable<SelectListItem> 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"},
};
}
Run Code Online (Sandbox Code Playgroud)
用于编辑视图页面的视图:
@Html.DropDownListFor(model => model.Property.City,
new SelectList(Model.Cities,"Value","Text"))
Run Code Online (Sandbox Code Playgroud)
显示值viewpage:
<td>
@(item.City != null ?
Model.Cities.SingleOrDefault(c => c.Value == item.City.ToString()).Text
: "")
</td>
Run Code Online (Sandbox Code Playgroud)
如果我是你,我应该为SelectList使用这样的字典键/ displayName:
一个静态成员(因为它是静态的......):
static Dictionary<int, string> CitiesDict = new Dictionary<int, string>()
{
{ -1 , "--Select One---"},
{ 0 ,"Chicago"},
{ 1 ,"New York"},
{ 2 ,"Zimbabwe"},
};
Run Code Online (Sandbox Code Playgroud)
下拉列表的一个属性:
public SelectList Cities { get; set; }
Run Code Online (Sandbox Code Playgroud)
在构造函数中初始化,如下所示:
Cities = new SelectList(CitiesDict , "Key", "Value", -1);
Run Code Online (Sandbox Code Playgroud)
然后在视图中进行编辑:
@Html.DropDownListFor(model => model.Property.City, Model.Cities)
Run Code Online (Sandbox Code Playgroud)
并用于显示:
@(CitiesDict.ContainsKey(Model.City) ? CitiesDict[Model.City] : "")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4069 次 |
| 最近记录: |