html.dropdownlist MVC 中未显示所需数据

Required data not displayed in html.dropdownlist MVC

我正在尝试从模型中填充一些数据以在下拉列表中查看。为此,我将模型创建为

型号:

public class NoOfSupportingLanguages
{
    public int LanguageId { get; set; }
    public string LanguageName { get; set; }
}
public class OrganisationModel
{
      public SelectList NoofSupportingLanguages { get; set; }
}

在控制器端,是这样的:

控制器:

public ActionResult Index()
        {
            List<NoOfSupportingLanguages> LanguageOption = new         List<NoOfSupportingLanguages>{
                new NoOfSupportingLanguages{ LanguageId = 1, LanguageName="English" },
                new NoOfSupportingLanguages{ LanguageId = 2, LanguageName="Arabic" },
                new NoOfSupportingLanguages{ LanguageId = 3, LanguageName="French" }
            };
            SelectList languageList = new SelectList(LanguageOption, "LanguageId");
            model.NoofSupportingLanguages = languageList;
            return View(model);
        }

查看:

 @Html.LabelFor(m => m.NoofSupportingLanguages, "Number of languages to support :")
 @Html.DropDownList("ddlNoOfSupportingLanguages", Model.NoofSupportingLanguages)

但在我的下拉列表中,我得到的值为:

Web.Models.Organisation.NoOfSupportingLanguages
Web.Models.Organisation.NoOfSupportingLanguages
Web.Models.Organisation.NoOfSupportingLanguages

请提出一些帮助。

提前致谢!!

您的代码有多个错误。首先,要生成一个 SelectList 你需要提供 2 个 属性 名称(用于 value 属性和显示文本),所以它需要是

SelectList languageList = new SelectList(LanguageOption, "LanguageId", "LanguageName");

接下来,你需要一个 属性 来绑定,所以你的模型需要包含另一个 属性,比如

public int SelectedLanguage { get; set; }

然后在视图中

@Html.DropDownListFor(m => m.SelectedLanguage, Model.NoofSupportingLanguages)

以便在您提交表单时,SelectedLanguage 的值将是所选选项的值。

如果您想以干净的 MVC 方式进行操作,您应该更改模型:

public class OrganisationModel
{
      public int SelectedLanguageId { get; set; }
      public List<SelectListItem> NoofSupportingLanguages { get; set; }
}

然后在你的控制器中:

    public ActionResult Index()
    {
        List<SelectListItem> LanguageOption = new List<SelectListItem>{
            new SelectListItem { Value = 1.ToString(), Text = "English" },
            new SelectListItem { Value = 2.ToString(), Text = "Arabic" },
            new SelectListItem { Value = 3.ToString(), Text = "French" }
        };
        //here you can set selected value
        model.SelectedLanguageId = 1;
        model.NoofSupportingLanguages = LanguageOption;
        return View(model);
    }

然后你就可以这样做了:

 @Html.LabelFor(m => m.NoofSupportingLanguages, "Number of languages to support :")
 @Html.DropDownListFor(m => m.SelectedLanguageId, Model.NoofSupportingLanguages, "Select Language")

现在,当您 POST 您的模型时,它会自动将 Selected LanguageId 绑定到 SelectedLanguageId 模型 属性.