.netcore新的SelectList返回null

时间:2018-08-10 10:09:53

标签: asp.net-core

我正在编写.netcore Webapp,并且正在使用全球化来填充控制器类中的国家/地区列表:

public IActionResult GetCountry()
    {
        List<string> CountryList = new List<string>();
        CultureInfo[] cInfoList = CultureInfo.GetCultures(CultureTypes.SpecificCultures);
        foreach (CultureInfo cInfo in cInfoList)
        {
            RegionInfo r = new RegionInfo(cInfo.LCID);
            if(!(CountryList.Contains(r.EnglishName)))
            {
                CountryList.Add(r.EnglishName);
            }
        }
        //sort list into order
        CountryList.Sort();
        ViewBag.CountryList = CountryList;
        return View(CountryList);
    }

我的模型课中有以下内容:

[Display(Name ="Country of Origin")]
    public string GetCountry { get; set; }

最后在我的cshtml中,我有以下内容:

<div class="form-group">
            <label asp-for="GetCountry"></label>
            <select asp-for="GetCountry" asp-items="new SelectList(ViewBag.CountryList)"></select>

        </div>

我不确定哪里出了问题,但是在运行时会给我以下消息。

  

ArgumentNullException:值不能为null。   参数名称:项目   Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable项目,字符串dataValueField,字符串dataTextField,IEnumerable selectedValues,字符串dataGroupField)

我可能做过一些愚蠢的事情,但任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

您错过了@中的asp-items

<div class="form-group">
    <label asp-for="GetCountry"></label>
    <select asp-for="GetCountry" asp-items="@(new SelectList(ViewBag.CountryList))"></select>
</div>

答案 1 :(得分:0)

您使用的代码确实正确填充了文化列表。

enter image description here

很可能您的 .cshtml 文件没有填充正确的视图模型。

在页面顶部,您通常会看到如下内容:

@model MyApplication.Models.Country.CountryListModel;

ViewBag.CountryList = Model.CountryList;