簡體   English   中英

TypeError:在asp.net MVC中用Select2插件未定義a嗎?

[英]TypeError: a is undefined with Select2 plugin in asp.net MVC?

我在另一個下拉菜單的on change事件上創建Select,所以這是我的腳本:

$ddlOther.on('change', function(e) {
        var Json = {},
            persons = [];
        Json.id = $(this).val();

        $.post('/PersonController/GetPersonDDL', Json, function(data) {
            drivers = data;
        }, 'json').done(function(data) {
            $person.select2({
                placeholder: "Select Persons(s)",
                allowClear: true,
                multiple: true,
                data:  persons
            });
        });
    });

這是我的控制器方法:

public ActionResult GetPersonDDL(JsonDictionary args)
{
     JsonResult result = null;

     string id= args["id"].Trim();

     var persons = _context.Persons
                           .Where(x => x.id== id)
                            .Select(x => new 
                                             { x.first_name, 
                                               x.middle_name, 
                                               x.last_name, x.id
                                              }).ToList();


     foreach (var person in persons)
     {
             var item = new SelectListItem
             {
                   Text = string.Format("{0} - {1} {2} {3}", 
                                                          person.id, 
                                                          person.first_name, 
                                                          person.middle_name,
                                                          person.last_name),
                    Value = person.id

                    };

                    list.Add(item);
                }

      result = Json(list.Select(x=>new {value = x.Text, 
                                        id = x.Value}
                                ), JsonRequestBehavior.AllowGet);


      return result;
}

我得到了數據,但是控制台(在這種情況下為螢火蟲)給了我錯誤:

TypeError: a is undefined

返回的JSON如下所示:

[ 
  Object { value="John Doe", id="1"}, 
  Object { value="Jane Doe" id="2"} 
]

Select2需要[{text="john doe",id="1"},{text="jane doe",id="2"}]

所以在我的控制器中,我只是將其更改為返回:

result = Json(list.Select(x=>new {value = x.Text, id = x.Value} ), JsonRequestBehavior.AllowGet);

現在,它可以通過更改控制器來工作,但是如果您希望為文本指定其他名稱,則可以更改Select2的text參數:

text : 'value'

但是我沒有讓它以這種方式工作,所以如果有人知道,請鳴叫。

暫無
暫無

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

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