【问题标题】:how to populate a dropdown menu using JSON如何使用 JSON 填充下拉菜单
【发布时间】:2016-09-14 13:36:03
【问题描述】:

我正在尝试根据另一个下拉列表的选择来填充下拉框。

我创建了一个示例变量var sampleData = { Default: { value1: "text", value2: "text" }, PTDR:,以便在用户选择似乎正在工作的第一个下拉列表后找到第二个下拉列表。但是,我正在尝试从我不知道如何纠正的控制器中的方法中纠正数据。

任何帮助或指导将不胜感激。

public ActionResult ptdrFilter(int id)
    {
        IUnitOfWork uow = DataAccess.GetUnitOfWork();
        using (ManageProductTemplate ptLogic = new ManageProductTemplate(ref uow))
        {
            List<ProductTemplate> currentpt = ptLogic.GetBy(x => x.ProductTemplateID == id);
            List<string> pt = new List<string>();
            foreach (var item in currentpt)
            {
                pt.Add(item.DistributionRule.Name);

            }
            return Json(pt);
        }
    }


    function drFilter() {

            var sampleData = { Default: { value1: "text", value2: "text" }, PTDR: { value1: "cal", value2: "cal" }, All: { value1: "lool", value2: "loool" } };
            var dataInJSONForm = JSON.stringify(sampleData);
            var datainJSObjectForm = JSON.parse(dataInJSONForm);

            $('#dd1').on('change', function (e) {
                var valueChosenInddl2 = $(this).val();
                var options = datainJSObjectForm[valueChosenInddl2];



                var $subselect = $('#subselect');
                $subselect.children().detach();
                for (var property in options) {
                    $subselect.append($('<option>', { value: property, text: options[property] }));

<div class="editor-field">
                <select id="dd1">
                  <option value="Default">Default</option>
                  <option value="PTDR">PT/DR</option>
                  <option value="All">All</option>
                </select>

<select id="ddl2">
                    <script>
                        drFilter();
                    </script>
                </select>

【问题讨论】:

  • 提供你的html
  • 我已经更新了代码

标签: javascript c# json asp.net-mvc razor


【解决方案1】:

您需要创建一个 ajax 请求以从控制器获取数据,这样的事情应该可以工作,以便在成功时将来自控制器的 json 对象传递到您的函数中,并且可以用来代替 sampleData。

$.ajax({
    type: "GET",
    data: {id: 1},
    url: @Action.Url("ptdrFilter"),
    success: function(result) {
        drFilter(result);
    }
});

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 2013-08-23
    • 2020-11-20
    • 2020-03-31
    相关资源
    最近更新 更多