动态设置Dropdownlist默认值

时间:2013-07-22 10:29:49

标签: asp.net-mvc drop-down-menu default-value

我在模型中定义了此下拉列表

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")                
}

我正在尝试很多选择,但我不知道该怎么做,请帮助我

提前打扰你!

1 个答案:

答案 0 :(得分: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" });