これを試してみましょう! Alright Do do this: フィルタリングが必要な国のリストがあるとします。 オートコンプリートは、デフォルトでいくつかのデフォルトのものを知っていますが、CountryNameを本当に必要としていて、すべてのキー入力が指定したURLへのajaxコールを行っているとします。 そのようにアクションメソッドを作成します。ここでは
public ActionResult LookupCountry(string q, int limit)
{
var list = GetListOfCountries(q, 0, limit);
var data = from s in list select new {s.CountryName};
return Json(data);
}
はjqueryのである:ここでは
$(document).ready(function() {
$('#txtCountryName').autocomplete('<%=Url.Action("LookupCountry", "MyController") %>', {
dataType: 'json',
parse: function(data) {
var rows = new Array();
for(var i=0; i<data.length; i++){
rows[i] = { data:data[i], value:data[i].CountryName, result:data[i].CountryName};
}
return rows;
},
formatItem: function(row, i, n) {
return row.CountryName;
},
width: 300,
mustMatch: true,
});
});
Htmlの
<html><head></head><body>@Html.TextBox("txtCountryName",Model.CountryName)</body></html>
は基本的には、魔法はLookUpCountry ザ・への呼び出しになっていますGetCountriesList(文字列クエリ、int startindex、int limit) 戻り値MyCountries.Where(c => c.CountryName.SubString(startindex, limit).Contains(query)).ToList();
JQueryはCountryNameが何であるか分からないので、独自のトリミング関数を作成しています。それはjavascriptオブジェクトだった場合どのようにこれまで私はかなりわかりませんが、Htmlのヘルパー拡張メソッドとして必要な国を返します
var jsonString = @Html.GetListOfCountries() //Or Model.Countries.ToJSONString()
var json = JSON.stringify(jsonString); //also JSON.Parse(jsonString) if stringify won't work
を行います。そしておそらく、javascriptオブジェクトのリストとして、それをそのような方法でそれをネイティブ言語で処理するのに十分なほどスマートになるでしょう。しかし、最初のアプローチは私のために働く。
プリロードとは何を意味し、それでもオートコンプリートとして動作しますか?テキストボックスに、コントローラがビューに送信する値を含めるようにしますか? –