[英]Trying to bind dropdownlist but getting error with the ToSelectList class
[英]Trying to bind Dropdownlist from db getting error
嗨,我正在嘗試從來自 db 的值綁定 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.Models.ddlupc> 轉換為 '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>
或者
<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<Smart_M.Models.ddlupc> 轉換為 'string'。任何想法將不勝感激。
因為綁定到@Html.DropDownList
的數據源是IEnumerable<SelectListItem>
類型,而Model.upcList
是List<ddlupc>
類型,導致報錯。
要解決它,可以將 Model.upcList 轉換為 IEnumerable 形式,如下所示:
@Html.DropDownList("upcList", new SelectList(Model.upcList, "UscCode", "UscDesc"))
更多在asp.net core中綁定下拉列表的方法也可以參考這里。
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>
視圖中的綁定下拉列表
一種。 我們可以使用 HTML.Dropdownlist 綁定下拉列表(它是一個 HTML 幫助類)。
列表項:<%= Html.DropDownList("ListItems")%>
在這里,我們將傳遞從控制器傳遞到視圖的“ListItems”。
灣 HTML.DropdownList 類的另一個重載方法,用於綁定下拉列表。
<%= Html.DropDownList("SelectedItem", (IEnumerable<SelectListItem>)ViewData["ListItems"])%>
檢查上面的代碼是否正確,然后在實現之后。
我希望這對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.