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
模型 属性.
我正在尝试从模型中填充一些数据以在下拉列表中查看。为此,我将模型创建为
型号:
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
模型 属性.