如何检查下拉列表值是否与C#中的表格国家/地区列表匹配?

时间:2018-07-19 00:25:29

标签: c# asp.net-mvc

我有一个包含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" })

1 个答案:

答案 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);
}