我有以下用户个人资料前缀的代码:
@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; }
}
如何在不破坏预选列表功能的情况下设置默认值?
答案 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---" })
希望这条法案对你有所帮助。