试图从数据库绑定Dropdownlist时出错



hi我正在尝试从数据库获取错误的值绑定Dropdownlist详情如下型号

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<Smart_M.型号.ddlupc>到"string"。

获取错误"无法从转换'System.collections.Generic.List<Smart_M.型号.ddlupc>到"string"。任何想法都将不胜感激。

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

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

@Html.DropDownList("upcList", new SelectList(Model.upcList, "UscCode", "UscDesc"))

您也可以参考此了解更多在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"], "UscCode", "UscDesc")) </span>
<br />
</div>
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>

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

视图的绑定下拉菜单

a。我们可以使用HTML.Dropdownlist(它是一个HTML助手类(绑定下拉列表。

列表项:<%=Html.DropDownList("ListItems"(%>

我们正在通过";ListItems";已经从控制器传递到视图的。

b。HTML.DropdownList类的另一个重载方法,用于绑定下拉列表。

<%= Html.DropDownList("SelectedItem", (IEnumerable<SelectListItem>)ViewData["ListItems"])%>  

执行后,检查上述代码是否正确。

最新更新