为MVC3 @HtmlDropDownListFor分配默认值

时间:2012-09-26 18:27:03

标签: asp.net-mvc asp.net-mvc-3 html.dropdownlistfor

我有以下用户个人资料前缀的代码:

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList() })

如果此人的名字中有前缀,则效果很好。但是,不是每个人都这样做。

数据库通过IEnumerable列表引入所选前缀,如下所示:

public class ProfileViewModel
    {
        public User UserProfile { get; set; }
        public IEnumerable<USStates> States { get; set; }
        public IEnumerable<Campus> CampusLocations { get; set; }
        public IEnumerable<Prefix> PrefixList { get; set; }
        public IEnumerable<Suffix> SuffixList { get; set; }
        public IEnumerable<MaritalStatus> MaritalStatusList { get; set; }
    }

如何在不破坏预选列表功能的情况下设置默认值?

3 个答案:

答案 0 :(得分:2)

您需要使用重载:SelectList Constructor (IEnumerable, String, String, Object)

在你的情况下,那将是:

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList(), "-default value-" })

答案 1 :(得分:0)

我认为你绑定下面的下拉列表

@Html.DropDownListFor(x => x.CountryId, new SelectList(Model.Countries, "ID", "Name"), "-Select Country-", new { @id = "ddlcountry" })

我认为这会对你有帮助..

答案 2 :(得分:0)

使用this重载:

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue);

最后一个参数是选中的值。您可以重写类似于此的方法:

@Html.DropDownListFor(model => model.UserProfile.Profile.Prefix.ID, Model.PrefixList.Select(x => new SelectListItem { Text = x.Name, Value = x.ID.Value.ToString()}).ToList(), "--- Default Value---" })

希望这条法案对你有所帮助。