簡體   English   中英

ASP.NET中的綁定下拉列表

[英]Binding Dropdown in ASP.NET

我在下拉列表中綁定數據時遇到問題,無法在網格中添加數據。 我想在代理商欄中傳遞航空公司名稱。 下拉列表的值無法更改如何更改下拉列表的值。 下拉列表中僅顯示第一家索引航空公司。

Controller:

public ActionResult Create()
{
    ViewBag.AID = db.Airlines.ToList();
    return View();


}

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(FormCollection frmcoll, ICollection<string> hddrowpindex)
{
    foreach (var row in hddrowpindex)
    {
        InternationalArrival stock = new InternationalArrival();
        stock.AgentName = How to take selected textvalue Name from dropdown???;
        stock.AgentCode = (frmcoll["AgentCode-" + row]).ToString();
        stock.ArrivalDate = DateTime.ParseExact(frmcoll["ArrivalDate-" + row], "yyyy-MM-dd", null);
        stock.ForPAX = Convert.ToInt32(frmcoll["ForPAX-" + row]);
        stock.IndPAX = Convert.ToInt32(frmcoll["IndPAX-" + row]);
        db.InternationalArrivals.Add(stock);
        db.SaveChanges();
    }
    return RedirectToAction("Index");
}

視圖:

   var sectorlist=(List<CompetitorAnalysis.Models.Airline>) ViewBag.AID;
        string sectorddl= "";
        foreach(var sector in sectorlist)
        {
        sectorddl = "<option value='"+sector.Name+"'>"+sector.Name+"</option>";
                <input type="hidden" id="hddsector" value="@sectorddl" />
        }

<script>
    var d = new Date();
    var rowindex = 1;
    function addItem() {
        msg = '<tr><input type="hidden" name="hddrowpindex" value="' + rowindex + '" class="rowcount"/>';
        //added for bringing dropdown
            msg += '<td class="center-fix" >';
            msg += '<select>'; 
            msg += document.getElementById("hddsector").value;
            msg += '</select>'
            msg += '</td>';
        msg += '<td class="nocap-col-sm-2">';
        msg += '<input type="text" class="form-control" style="text-transform:uppercase" name="AgentCode-' + rowindex + '" id="AgentCode-' + rowindex + '" placeholder="Code"/>';
        msg += '</td>';
        msg += '<td class="nocap-col-sm-2">';
        msg += '<input type="text" class="form-control datepicker" name="ArrivalDate-' + rowindex + '" id="ArrivalDate-' + rowindex + '" placeholder="YYYY/MM/DD"/>';
        msg += '</td>';
        msg += '<td class="nocap-col-sm-2">';
        msg += '<input type="text" class="form-control" name="ForPAX-' + rowindex + '" id="ForPAX-' + rowindex + '" placeholder="ForPAX" value="0" />';
        msg += '</td>';
        msg += '<td class="nocap-col-sm-2 center-fix">';
        msg += '<input type="text" class="form-control" name="IndPAX-' + rowindex + '" id="IndPAX-' + rowindex + '" placeholder="IndPAX" value="0" />';
        msg += '</td>';
        msg += '<td class="nocap-col-sm-2 center-fix" style="text-align:center;"><a href="" ><span id="remove-' + rowindex + '"  style="cursor:pointer"><i class="fa fa-trash"></i>Remove</span></a>';
        msg += '&nbsp;<span id="perror-' + rowindex + '" style="display:none"><i class="fa fa-exclamation-triangle faa-exclamation-triangle animated"></i></span></td>';
        msg += '</tr>';
        $('table#portfolio tbody').append(msg);

        rowindex++;
    }
</script>

在此處輸入圖片說明

如何使下拉列表填充。 在這種情況下,航空公司表的第一個數據顯示在下拉列表中。 以及如何在控制器的Post方法中獲取選定的值。

在此處輸入圖片說明

您的直接問題就在循環中:

var sectorlist=(List<CompetitorAnalysis.Models.Airline>) ViewBag.AID;
string sectorddl= "";
foreach(var sector in sectorlist)
{
    sectorddl = "<option value='"+sector.Name+"'>"+sector.Name+"</option>";
    <input type="hidden" id="hddsector" value="@sectorddl" />
}

在我看來,您正在嘗試為select列表下拉列表構建html字符串。 但是,在循環的每一遍中,您都通過使用sectorddl = "some value"來覆蓋扇區ddl中的sectorddl = "some value"也許您是說sectorddl += "some value"

順便說一句,這實際上不是在ASP.NET MVC中構建下拉列表的好方法。 您可以通過執行以下操作來簡化代碼:

控制者

var items = from aid in db.Airlines
            select new SelectListItem
            {
                Text = aid.Name, //or whatever the field names are
                Value = aid.Id
            };

ViewBag.AID = items.ToList();

視圖

@Html.DropDownList(model => model.SelectedAirlineId, 
    new SelectList(ViewBag.AID, "Value", "Text"))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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