私は、オートコンプリートのテキストボックスの例から学ぶ初心者です。私が理解していないのは、私のコントローラの "AutoCompleteHelper"機能です。入力は "term"と命名されなければなりません。私が "mystr"や "reqstr"のような名前を付けた場合、デバッグ時には常に入力が "null"と言われます。私は自分の.jsと.cshtmlのどこにでも "用語"を定義しませんでした。私は実際に.cshtmlファイル内でそれをname = "q"と呼んでいました。私は「ターム」という名前を何に使用していますか?MVCの基礎 - コントローラの入力パラメータ
コントローラーコード:
string[] txtlst = {"ActionScript", "AppleScript",
"Asp", "BASIC", "C", "C++", "Clojure",
"COBOL", "ColdFusion", "Erlang", "Fortran",
"Groovy", "Haskell", "Java", "JavaScript",
"Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme"};
public JsonResult AutoCompleteHelper(string term) {
if (!Request.IsAjaxRequest()) return null;
var lst = txtlst.Where(s => s.StartsWith(term)).ToList();
var res = lst.Select(x => new { value = x, label = x });
return Json(res, JsonRequestBehavior.AllowGet);
}
の.jsコード:
$("input[data-autocomplete-source]").each(function() {
$(this).autocomplete({ source: $(this).attr("data-autocomplete-source") });
});
});
.cshtmlコード:
<p>Auto Complete Example</p>
<input type="text" name="q" data-autocomplete-source="@Url.Action("AutoCompleteHelper", "Home")" />
私は何かを誤解/見渡せるだろうか?私はなぜ私のparam名として "用語"を使用するように修正されているのかわかりません。
ohh大丈夫です!だから、どこにでも自分の固有のparam名を定義できますか?私は私の名前= "q"がそれをしていると思った、そうでなければ、それは何ですか?一般に、どのヘルパーがどのクエリ文字列にどのパラメータと名前を渡しているのかを確認するにはどうすればよいですか?私の初心者のスパムの質問には申し訳ありません。 – Tom
@Tomあなたが 'AutoCompleteHelper(文字列q)'に変更した場合、コントローラで 'AutoCompleteHelper(文字列)'を設定すると思います。@ – Manatherin
に変更されると思います。私がそれを実行すると、qはnullです。それは言葉に過ぎない。 – Tom