为什么我在DropDownList中获取"System.Web.Mvc.SelectListItem"?

JzI*_*9Dg 11 c# asp.net asp.net-mvc html-select

我相信我已正确绑定了我的数据,但我似乎无法获取每个SelectListItem的text属性以正确显示.

我的模特:

public class Licenses
    {
        public SelectList LicenseNames { get; set; }
        public string SelectedLicenseName { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

控制器:

[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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

视图:

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

Shy*_*yju 13

使用Items您所在LicenseNames属性的属性SelectList

@Html.DropDownList("SelectedLicenseName", new SelectList(Model.LicenseNames.Items,
                                       "Value", "Text", Model.LicenseNames.SelectedValue))
Run Code Online (Sandbox Code Playgroud)

或者使用DropDownListFor辅助方法

@Html.DropDownListFor(d=>d.SelectedLicenseName, 
                                         Model.LicenseNames.Items as List<SelectListItem>)
Run Code Online (Sandbox Code Playgroud)

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

[HttpPost]
public ActionResult Create(Licenses model)
{
  //check model.SelectedLicenseName
}  
Run Code Online (Sandbox Code Playgroud)