![](/img/trans.png)
[英]Plugin Select2 Is always selecting the first option in ASP.NET
[英]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.