繁体   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