我有一个包含6个国家/地区的下拉列表。但是我也有一个国家/地区表,其中有100多个国家/地区。
现在,我要检查下拉列表中是否存在CountryId
。如果CountryId
不存在,则默认情况下,从下拉列表中选择第一个。
我们非常感谢您的帮助。请显示执行此操作的方法?
型号
public int? Country { get; set; }
public IEnumerable<SelectListItem> CountriesList { get; set; }
控制器
var country = db.Country.SingleOrDefault(u => u.CountryId == user.CountryID)
int CountryId = countrylist.CountryId;
CountriesList = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "India" },
new SelectListItem { Value = "2", Text = "Pakistan" },
new SelectListItem { Value = "3", Text = "Nepal" },
new SelectListItem {Value = "4", Text = "Sri Lanka" },
new SelectListItem { Value = "5", Text = "Bangladesh" },
new SelectListItem {Value = "6", Text = "Bhutan" },
}
查看
@Html.DropDownListFor(m => m.Country, Model.CountriesList, new { @class = "form-control" })
答案 0 :(得分:2)
如果将视图模型的Country
属性值设置为国家/地区ID,则当呈现SELECT元素时,帮助程序将选择相应的选项。
您可以使用CountriesList
方法检查视图模型的Any
属性中是否存在特定的countryId值。
当没有符合条件的记录时,SingleOrDefault
方法将返回NULL
。因此,还要对此进行null检查。
public ActionResult Create()
{
var vm = new CreateVm();
vm.CountriesList = new List<SelectListItem>
{
new SelectListItem { Value = "1", Text = "India" },
new SelectListItem { Value = "2", Text = "Pakistan" },
new SelectListItem { Value = "3", Text = "Nepal" },
new SelectListItem {Value = "4", Text = "Sri Lanka" },
new SelectListItem { Value = "5", Text = "Bangladesh" },
new SelectListItem {Value = "6", Text = "Bhutan" }
};
// user object is intstantiated somehave
var country = db.Country.SingleOrDefault(u => u.CountryId == user.CountryID);
if (country != null && vm.CountriesList
.Any(a => a.Value == country.CountryId.ToString()))
{
vm.Country = country.CountryId;
}
else
{
vm.Country = 1; // Value of "India" option (select list)item
}
return View(vm);
}