试图从数据库绑定Dropdownlist出现错误

问题描述

嗨,我正在尝试将Dropdownlist与来自db的值绑定错误 详细如下 型号

public class Ipcell
{  public List<ddlupc> upcList { get; set; }
}
    public class ddlupc
    {
     public string UscCode { get; set; }
    public string UscDesc { get; set; }
    
}

控制器 从jQuery Ajax值被调用

public PartialViewResult RaiseBill(List<Ipcell> casedetail1)
        {List<Ipcell> result1 = new List<Ipcell>();
            conn.open();
            string qry1 = "select IUM_USC_CODE,IUM_USC_DESC from V_IP_USC_MAST";
            OracleCommand command1 = new OracleCommand(qry1,conn);
            OracleDataReader reader1 = command1.ExecuteReader();
            List<ddlupc> objlist = new List<ddlupc>();
            Ipcell member1 = new Ipcell();
            while (reader1 != null && reader1.Read())
            {               

            objlist.Add(new ddlupc { UscCode = reader1[0].ToString(),UscDesc = reader1[1].ToString() });
             result1.Add(member1);
            }
            member1.upcList = objlist;
            conn.Close();
  if (casedetail1!=null)
            {
                ViewBag.Caseid = casedetail1[0].CaseId;
            }
            
            return PartialView("RaiseBill",result1);          

        }
      

视图

@model Smart_M.Models.Ipcell
<div>
<div style="padding-left:5%">Usc Code</div><span style="padding-left:5%">@Html.DropDownList("upcList",Model.upcList) </span><br />
</div>

获取错误“无法从'System.collections.Generic.List 转换为'string'。 任何想法将不胜感激。

解决方法

DropDownList使用SelectListItem进行数据绑定示例:

@Html.DropDownList("Names",new List<SelectListItem>  
{  
   new SelectListItem{ Text="NAME1",Value = "1" },new SelectListItem{ Text="NAME2",Value = "2" },new SelectListItem{ Text="NAME3",Value = "3" },})  

例如,请将Model.upcList更改为List

<div style="padding-left:5%">Usc Code</div>
<span style="padding-left:5%">
@Html.DropDownList("upcList",Model.upcList.Select(x => new SelectListItem(){Text  
 = x.UscDesc,Value = x.UscCode }).ToList())
</span>

OR

<div style="padding-left:5%">Usc Code</div>
<span style="padding-left:5%">
@Html.DropDownList("upcList",new SelectList(Model.upcList,"UscCode","UscDesc"))
</span>

,

正在获取错误“无法从 将'System.collections.Generic.List 转换为'string'。 任何想法将不胜感激。

因为绑定到@Html.DropDownList的数据源是 IEnumerable<SelectListItem> 类型,但是Model.upcListList<ddlupc>类型,这导致了错误

要解决该问题,您可以将Model.upcList转换为IEnumerable形式,如下所示:

@Html.DropDownList("upcList","UscDesc"))

您还可以参考this,了解在asp.net核心中绑定dropdownlist的更多方法。

更新

public PartialViewResult RaiseBill(List<Ipcell> casedetail1)
        {List<Ipcell> result1 = new List<Ipcell>();
            conn.Open();
            string qry1 = "select IUM_USC_CODE,IUM_USC_DESC from V_IP_USC_MAST";
            OracleCommand command1 = new OracleCommand(qry1,conn);
            OracleDataReader reader1 = command1.ExecuteReader();
            List<ddlupc> objlist = new List<ddlupc>();
            Ipcell member1 = new Ipcell();
            while (reader1 != null && reader1.Read())
            {               

            objlist.Add(new ddlupc { UscCode = reader1[0].ToString(),UscDesc = reader1[1].ToString() });
             result1.Add(member1);
            }
            member1.upcList = objlist;
            conn.Close();
  if (casedetail1!=null)
            {
                ViewBag.Caseid = casedetail1[0].CaseId;
            }

            ViewData["dropSrc"] = objlist ;
            return PartialView("RaiseBill",result1);          

        }
  

RaiseBill视图:

@model IEnumerable<Smart_M.Models.Ipcell> 
@{
    ViewData["Title"] = "IncellTest";
    Layout = "~/Views/Shared/_Layout.cshtml";
} 

<div>
    <div style="padding-left:5%">Usc Code</div>
    <span style="padding-left:5%">@Html.DropDownList("upcList",new SelectList((IEnumerable<Smart_M.Models.ddlupc>)ViewData["dropSrc"],"UscDesc")) </span>
    <br />
</div>