【问题标题】:mvc 4 missing anything on these cascading dropdownsmvc 4 在这些级联下拉列表中缺少任何内容
【发布时间】:2014-07-23 19:44:27
【问题描述】:

大家晚上好,我正在尝试获取数据,当我的下拉列表选择索引更改之一是我的代码时,我无法找到我在哪里丢失或做错了什么如果你能帮助我,我很高兴谢谢你。

这是我的脚本代码

$("#ddOrder").change(function (e) {
            alert = "basıldı";
            var oID = $(this).val();
            $.getJSON("../Accessory/loadWorkshops", { _orderId: oID },
                   function (data) {
                       var select = $("#ddAcc");
                       select.empty();
                       select.append($('<option/>', {
                           value: 0,
                           text: "Aksesuar seçiniz"
                       }));
                       $.each(data, function (index, itemData) {
                           select.append($('<option/>', {
                               value: itemData.Value,
                               text: itemData.Text
                           }));
                       });
                   });
        });

这些是我的控制器代码

public ActionResult addAccessoryShipment()
    {
        if (Session["_userName"] == null)
        {
            return RedirectToAction("Index", "Home");
        }

        HelperPartial _helper = new HelperPartial(
            ViewData,
            Session["_userName"].ToString(),
            Session["_userPermissionId"].ToString()
            );

        Repository<Order> _ro = new Repository<Order>();
        IEnumerable<SelectListItem> _orderSelectListItem = _ro.All().AsEnumerable().Select(s => new SelectListItem
        {
            Text = s.code,
            Value = s.id.ToString()
        }).OrderBy(o => o.Text);

        ViewData["ddOrder"] = _orderSelectListItem;

        Repository<AccessoryList> _ra = new Repository<AccessoryList>();
        IEnumerable<SelectListItem> _clothSelectListItem = _ra.All().AsEnumerable().Select(s => new SelectListItem
        {
            Text = s.name,
            Value = s.id.ToString()
        }).OrderBy(o => o.Text);

        ViewData["ddaList"] = _clothSelectListItem;


        return View();
    }

    [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult loadWorkshops(string _orderId)
    {
        //IEnumerable<MyCustomerProductType> _myCustomerProductType = _rc.All().Select(s => new MyCustomerProductType { id = s.id, customerName = s.customer.name, productTypeName = s.productType.name });

        int _oId = Convert.ToInt32(_orderId);

        Repository<OrderCloth> _ra = new Repository<OrderCloth>();

        IEnumerable<MyOrderCloth> _clothSelectListItem = _ra.All().Where(o => o.orderId == _oId).Select(s => new MyOrderCloth
        {
            workshopName = s.workshop.name,
            workshopId = s.workshopId
        });

        List<SelectListItem> _workshopListItem = new List<SelectListItem>();

        foreach (MyOrderCloth item in _clothSelectListItem)
        {
            _workshopListItem.Add(new SelectListItem
            {
                Text = item.workshopName,
                Value = item.workshopId.ToString()
            });
        }

        //ViewData["ddwList"] = _workshopListItem;

        return Json(_workshopListItem, JsonRequestBehavior.AllowGet);
    }

这是我的视图代码

  @using (Html.BeginForm("AccessoryShipmentAdd", "Accessory", FormMethod.Post))
{
        @Html.ValidationSummary(true)

    <div class="control-group">
        <label class="control-label">Sipariş No</label>
        <div class="controls">
            @Html.DropDownListFor(model=>model.orderId,(IEnumerable<SelectListItem>)ViewData["ddOrder"],"seçim yapınız",new {id="ddOrder", @class = "span6 chosen"})
        </div>
        @Html.ValidationMessageFor(model => model.orderId)
    </div>

    <div class="control-group">
        <label class="control-label">Atölye Seçiniz</label>
        <div class="controls">
            @Html.DropDownListFor(model=>model.workshopId,new SelectList(Enumerable.Empty<SelectListItem>(),"workshopId","workshopName"),"seçim yapınız",new {@id="ddAcc" ,@class = "span6 chosen"})
        </div>
        @Html.ValidationMessageFor(model => model.workshopId)
    </div>

    <div class="control-group">
        <label class="control-label">Aksesuar Seçiniz</label>
        <div class="controls">
            @Html.DropDownListFor(model=>model.accessoryListId,(IEnumerable<SelectListItem>)ViewData["ddaList"],"seçim yapınız",new { @class = "span6 chosen"})
        </div>
        @Html.ValidationMessageFor(model => model.accessoryListId)
    </div>

我可以从 loadWorkshops 类中获取数据,但它不会返回到我的下拉列表。我该怎么办?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 razor cascadingdropdown cascading


    【解决方案1】:

    试试这个(将选项中的“/>”更改为“>”):

    $("#ddOrder").change(function () {
            var oID = $(this).val();
    
            $.getJSON("../Accessory/loadWorkshops", { _orderId: oID },
                function (resultData) {
                    var selectACC = $("#ddAcc");
                    selectACC.empty();
                    selectACC.append($('<option>', {
                        value: 0,
                        text: '-- Aksesuar seçiniz --'
                    }));
    
                    $.each(resultData, function (index, itemData) {
                        selectACC.append($('<option>', {
                            value: itemData.Value,
                            text: itemData.Text
                        }));
                    });
                });
        });
    

    将您的控制器更新为以下内容:

    //Place the fetching of data in private
    private IList<MyOrderCloth> GetClothOrders(int _orderId)
    {
        Repository<OrderCloth> _ra = new Repository<OrderCloth>();
    
        IList<MyOrderCloth> clothOrders = null;
    
        clothOrders = _ra.MyOrderCloth.Where(o => o.orderId == _orderId).ToList();
    
        return clothOrders;
    }
    
    //Accessed by Javascript
    [AcceptVerbs(HttpVerbs.Get)]
    public JsonResult loadWorkshops(string _orderId)
    {
        int id = 0;
    
        if (!string.IsNullOrEmpty(_orderId))
        {
            id = Convert.ToInt32(_orderId);
        }
    
        var clothList = GetClothOrders(id);
        var clothData = clothList.Select(a => new SelectListItem()
        {
            Text = a.workshopName.ToString(),
            Value = a.workshopId.ToString(),
        });
    
        return Json(clothData, JsonRequestBehavior.AllowGet);
    }
    

    【讨论】:

    • 我快疯了.. 我可以看到控制器中的数据,但我的下拉列表仍然是空的 :)
    • 将您的下拉列表 @id="ddAcc" 更改为 id="ddAcc"。 Javascript 找不到您的下拉控件,这就是原因。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多