簡體   English   中英

將Select 2與ASP.NET MVC結合使用

[英]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.

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