簡體   English   中英

嘗試從數據庫綁定 Dropdownlist 出現錯誤

[英]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.upcListList<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM