2017-03-11 15 views
0

私はhttps://github.com/ichord/At.jsライブラリを使用してオートコンプリートを実現しています。At.js @mention - C#Web API

しかし、https://github.com/ichord/At.js/wiki/How-to-use-remoteFilterのように、私がremoteFilterを使用しているときに「未定義」のドロップダウンリストが表示されます。

モデル:

public class CaseHistory 
{ 
    public int CaseHistoryId { get; set; } 


    [Display(Name = "Symptom/Disease")] 
    [Required(ErrorMessage = "Please enter symptom or disease")] 
    public string SymptomOrDisease { get; set; } 

    public string Description { get; set; } 

} 

APIアクションコード:

var myUrl = 'https://localhost:44301/api/CaseHistories'; 

    $('#inputor').atwho({ 
    at: ":", 
    callbacks: { 
     /* 
     It function is given, At.js will invoke it if local filter can not find any data 
     query [String] matched query 
     callback [Function] callback to render page. 
     */ 
     remoteFilter: function(query, callback) { 
      $.getJSON(myUrl, { q: query }, function (data) { 
       callback(data); 
      }); 
     } 
    } 
    }); 
+0

私は、APIのアクションコードを追加したのAPIアクションコード – zaitsman

+0

@zaitsmanを共有してください。 – InsParbo

答えて

0

変化であるとコントローラのコード:

private ApplicationDbContext db = new ApplicationDbContext(); 

    // GET api/CaseHistories 
    public IQueryable<CaseHistory> GetCaseHistories() 
    { 
     return db.CaseHistories; 
    } 

ここでは、かみそりビューで私のコードです

public dynamic GetCaseHistories() 
    { 
     return db.CaseHistories.Select(x => x.SymptomOrDisease).ToList(); 
    } 

コールバックに渡すパラメータは文字列の配列でなければならないという問題があります。あなたが本当にJSでこれをやってみたかった場合

var myUrl = 'https://localhost:44301/api/CaseHistories'; 

    $('#inputor').atwho({ 
    at: ":", 
    callbacks: { 
     /* 
     It function is given, At.js will invoke it if local filter can not find any data 
     query [String] matched query 
     callback [Function] callback to render page. 
     */ 
     remoteFilter: function(query, callback) { 
      $.getJSON(myUrl, { q: query }, function (data) { 
      var targetData = []; 
       for(var i = 0;i < data.length;i++){ 
         targetData.push(data[i].SymptomOrDisease); 
       } 
       callback(targetData); 
      }); 
     } 
    } 
    }); 
+0

コントローラを変更せずにビューでjqueryを使用してこれを達成する方法はありますか? – InsParbo

+0

答えを更新しました。しかし、これは本当に効率的ではありませんので、効果的にdbからデータを選択して破棄します。 – zaitsman

+0

私は参照してください。次に、dbオプションのデータを選択します。もう一つ、myUrlとして 'api/CaseHistories'を使用している場合、URLはhttps:// localhost:44301/Prescriptions/Createになります。ここで処方箋は、現在のビューのコントローラです。[上のビュー]上記のコードのように完全なURLを使用せずにurlとしてapi/CaseHistoriesだけを渡すにはどうすればよいですか? – InsParbo

関連する問題