[英]Using Select 2 with ASP.NET MVC
我正在使用ASP.NET MVC 4應用程序。 在我的應用中,我試圖用Select 2插件替換下拉列表。 目前,我在從ASP.NET MVC控制器加載數據時遇到問題。 我的控制器如下所示:
public class MyController : System.Web.Http.ApiController
{
[ResponseType(typeof(IEnumerable<MyItem>))]
public IHttpActionResult Get(string startsWith)
{
IEnumerable<MyItem> results = MyItem.LoadAll();
List<MyItem> temp = results.ToList<MyItem>();
var filtered = temp.Where(r => r.Name.ToLower().StartsWith(startsWith.ToLower());
return Ok(filtered);
}
}
當我在這段代碼中設置斷點時,我注意到startsWith
沒有值斷點被擊中的事實意味着(我認為)我下面的url
屬性設置正確。 但是,我不確定為什么未設置startsWith
。 我使用以下JavaScript從Select 2調用它:
function formatItem(item) {
console.log(item);
}
function formatSelectedItem(item) {
console.log(item);
}
$('#mySelect').select2({
placeholder: 'Search for an item',
minimumInputLength: 3,
ajax: {
url: '/api/my',
dataType: 'jsonp',
quietMillis: 150,
data: function (term, page) {
return {
startsWith: term
};
},
results: function (data, page) {
return { results: data };
}
},
formatResult: formatItem,
formatSelection: formatSelectedItem
});
當此代碼運行時,我在select 2下拉列表中看到的唯一一件事是“ Loading failed
。 但是,我知道我的api正在被調用。 我在提琴手中看到200回來了。 我什至可以看到JSON結果,如下所示:
[
{"Id":1,"TypeId":2,"Name":"Test", "CreatedOn":"2013-07-20T15:10:31.67","CreatedBy":1},{"Id":2,"TypeId":2,"Name":"Another Item","CreatedOn":"2013-07-21T16:10:31.67","CreatedBy":1}
]
我不明白為什么這行不通。
從文檔中 :
Select2提供了一些快捷方式,使訪問存儲在陣列中的本地數據變得容易。
...這樣的數組必須具有“ id”和“ text”鍵。
您的json對象不包含“ id”或“ text”鍵:)盡管我沒有測試過,但這應該可以工作:
results: function (data, page) {
return { results: data, id: 'Id', text: 'Name' }
}
在替代鍵綁定的鏈接之后還有更多文檔。我相信這就是您的問題所在。
希望這會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.