2014-09-25 2 views
1

ASP.NET MVC 4 응용 프로그램에서 작업 중입니다. 내 응용 프로그램에서 내 드롭 다운 목록을 Select 2 plugin으로 대체하려고합니다. 현재 ASP.NET MVC 컨트롤러에서 데이터를로드하는 데 문제가 있습니다.ASP.NET MVC에서 Select 2 사용

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이 설정되어 있는지 잘 모르겠습니다. 나는 다음과 같은 자바 스크립트를 사용하여 선택 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 
}); 

, 내가 다운 목록 선택이 드롭 볼 수있는 유일한 것은 Loading failed입니다. 그러나, 나는 내 api가 불려지는 것을 알고있다. 나는 200 명이 돌아올 것을 피들러에서 볼 수있다.

[ 
{"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} 
] 

왜 이것이 작동하지 않는지 이해할 수 없습니다. (가) documentation에서

+0

글쎄, 코드 스 니펫에'$ ('# mySelect)'에'''가 없습니다. 이 문제가 프로젝트에서 수정 되었습니까? – jrummell

+0

예. 이제 코드 스 니펫을 수정했습니다. – user70192

+0

json에 'text'라는 속성이 표시되지 않습니다. funciton 핸들러에서 어떻게 든 비헤이비어를 오버라이드하지 않으면 각 항목에 'id'및 'text' 속성이 모두 필요합니다. – AaronLS

답변

1

: 이러한 배열은 "ID를"이 있어야합니다

선택 2는 쉽게 배열에 저장된 로컬 데이터 에 액세스 할 수 있도록 일부 바로 가기를 제공합니다 ...

... 그리고 "텍스트"키. 귀하의 JSON 개체는 "ID"또는를 포함하지 않는

"텍스트"키 :)이 일 나는 그것을 테스트하지해야하지만 :

results: function (data, page) { 
    return { results: data, id: 'Id', text: 'Name' } 
} 

다른 키에 링크를 추가 문서가있다 바인딩 ... 나는 당신의 문제가있는 곳을 믿습니다.

이 정보가 도움이되기를 바랍니다.

+0

안녕하세요.하지만 내 컨트롤러의 'startsWith' 매개 변수가 채워지지 않은 이유는 무엇입니까? – user70192

+0

나는 같은 종류의 문제라고 생각한다. 'data : function (term, page) {...}'을 'data : {startsWith : "Test"}'로 바꾸어 보자. – wahwahwah

+0

컨트롤러에 충돌해야한다. Select 2 ajax "바로 가기"는 정상적인 Ajax 호출을 래핑하는 것입니다. – wahwahwah

관련 문제