为什么我在 DropDownList 中得到“System.Web.Mvc.SelectListItem”

本文关键字:Web System Mvc SelectListItem DropDownList 为什么 | 更新日期: 2023-09-27 18:37:02

我相信我已经正确绑定了数据,但我似乎无法正确显示每个选择列表项的文本属性。

我的模型:

public class Licenses
    {
        public SelectList LicenseNames { get; set; }
        public string SelectedLicenseName { get; set; }
    }

控制器:

[HttpGet]
    public ActionResult License()
    {
        try
        {
            DataTable LicsTable = BW.SQLServer.Table("GetLicenses", ConfigurationManager.ConnectionStrings["ProfressionalActivitiesConnection"].ToString());
            ProfessionalActivities.Models.Licenses model = new ProfessionalActivities.Models.Licenses();
            model.LicenseNames = new SelectList(LicsTable.AsEnumerable().Select(row =>
            new SelectListItem
            {
                Value = row["Description"].ToString(),
                Text = "test"
            }));
            return PartialView("_AddLicense", model);
        }
        catch (Exception ex)
        {
            var t = ex;
            return PartialView("_AddLicense");
        }
    }

视图:

@Html.DropDownList("LicenseNames", new SelectList(Model.LicenseNames, "Value", "Text", Model.LicenseNames.SelectedValue), new { htmlAttributes = new { @class = "form-control focusMe" } })

为什么我在 DropDownList 中得到“System.Web.Mvc.SelectListItem”

使用类型 SelectListLicenseNames 属性的 Items 属性

@Html.DropDownList("SelectedLicenseName", new SelectList(Model.LicenseNames.Items,
                                       "Value", "Text", Model.LicenseNames.SelectedValue))

或使用DropDownListFor帮助程序方法

@Html.DropDownListFor(d=>d.SelectedLicenseName, 
                                         Model.LicenseNames.Items as List<SelectListItem>)

因此,当您发布表单时,您可以检查SelectedLicenseName属性

[HttpPost]
public ActionResult Create(Licenses model)
{
  //check model.SelectedLicenseName
}  

我显式设置了dataValueFielddataTextField名称。

new SelectListItem
{
    Value = row["Description"].ToString(),
    Text = "test"
}), "Value", "Text");

然后,无需在您的视图中写Model.LicenseNames.Items as List<SelectListItem>(如您接受的答案中所建议的那样)。