1

我有以下用户配置文件前缀代码:

@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; }
    }

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

4

3 回答 3

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

于 2012-09-26T21:07:12.610 回答
0

我想你像下面这样绑定你的下拉列表

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

我想这会帮助你..

于 2012-09-26T18:34:35.037 回答
0

使用这个重载:

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

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

于 2012-09-26T19:22:35.277 回答