2013-07-22 81 views
1

我已经在模型设置DROPDOWNLIST默认值动态

tipoUsuario = new List<SelectListItem>();    
tipoUsuario.Add(new SelectListItem { Text = "Sin tipo", Value = "4" });     
tipoUsuario.Add(new SelectListItem { Text = "1 - Super usuario", Value = "1"});     
tipoUsuario.Add(new SelectListItem { Text = "2 - Administrador", Value = "2" }); 
tipoUsuario.Add(new SelectListItem { Text = "3 - Usuario", Value = "3" });     

public List<SelectListItem> tipoUsuario { get; set; } 

该视图显示元件的列表定义的本下拉列表中,每个元件都具有一个下拉列表,其中的每一个必须具有基于一个不同的缺省选择的值来自控制器的值。现在我出“管理员”,但我想的默认值...

if (@item.type == "2") 
{      
    @Html.DropDownListFor(x => item.type, item.tipoUsuario, "Administrator")     
} 

我已经被尝试很多的选择,但我不知道该怎么做,帮我请

Thaning你提前!

回答

1

您需要在SelectListItem上将“Selected”属性设置为true。你可以创建这样一个人口方法:

public IEnumerable<SelectListItem> PopulateTipoUsuario(string default){ 
    var tipo = from t in source 
        select new SelectListItem 
        { 
         Text = t.Text, 
         Value = t.Value, 
         Selected = t.Text == default 
        }; 
     return tipo; 
} 

源变量将是你原来的SelectListItems的集合:

var source = new List<SelectListItem>();    
tipoUsuario.Add(new SelectListItem { Text = "Sin tipo", Value = "4" });     
tipoUsuario.Add(new SelectListItem { Text = "1 - Super usuario", Value = "1"});     
tipoUsuario.Add(new SelectListItem { Text = "2 - Administrador", Value = "2" }); 
tipoUsuario.Add(new SelectListItem { Text = "3 - Usuario", Value = "3" }); 
+0

我必须从我的观点设置的值,因为我有多个下拉列表,基于在来自我的数据库的值,我“保存”在item.type中。也许我错了我的观点。谢谢! – Alsan

+1

嗯......你可以在你的ViewModel中创建多个IEnumerable 属性(如果你使用ViewModels ...)?每个下拉列表都是不同的,你应该看看每个下拉菜单创建一个相应的属性。 –

+0

谢谢!最后,我为我的模型中的每个值创建了不同的下拉列表! – Alsan