私は MVC を初めて使用し、提案された MemberNames を返すためにテキストボックスでオートコンプリートを機能させようとしています。2 つの問題があります (問題 1 - ユーザーの最初のテキスト文字をコントローラーに取得する問題と、問題 2 - 返された名前のコントローラー リストをテキスト ボックスの下に表示する問題)。
意見:
@section scripts{
<script type="text/javascript">
$(document).ready(function () {
$("#autocomplete").autocomplete({ source: '@Url.Action("MemberList", "Grievances", new { autocomplete = $("#autocomplete").val() })' });
});
</script>
}
...
<input id="autocomplete">
問題 1 - 上記のビューで、@Url.Action の 3 番目のパラメーターを入力しないと、コントローラーがパラメーター値として null を受け取ります (多数の Web サイトで、オートコンプリートがこの値を自動的にバインドすると言っていますが、実行していません)。
次のように、3 番目のパラメーターにハードコードを入力すると、次のようになります。
new { autocomplete = "ead" }
次に、コントローラーはパラメーター値として「ead」を受け取ります。上記のコード ブロックにそのままコードを挿入すると、Web サイトでエラーが発生し、3 番目のパラメーターに「予期しない文字 '$'」というエラーが表示されます。
質問 1 - オートコンプリート テキスト ボックスの値をコントローラーに渡すにはどうすればよいですか?
問題2 - これが私のコントローラーコードです
public ActionResult MemberList(string autocomplete)
{
var memberNames = (from p in context.Members
where p.MemberName.Contains(autocomplete)
select p.MemberName).Distinct().Take(10);
string content = string.Join<string>("\n", memberNames);
return Content(content);
}
上記のビューの 3 番目のパラメーターに値 (「ead」など) をハード コードすると、コントローラーで値が取得されます。コントローラーはデータベースから適切なレコードのリストを取得し、それをビューに返します。ただし、テキスト ボックスの下には何も表示されません。ビューに必要な JavaScript ファイルと CSS ファイルが含まれています。値のリストをハードコーディングすると、テキスト ボックスの下に適切に表示されます。結果を取得できないのはコントローラーだけです。
質問 2 - オートコンプリート テキスト ボックスに値が表示されるように、コントローラが値のリストを返すようにするにはどうすればよいですか?
この 2 つの問題について、ご協力をお願いいたします。泥の中で車輪を回転させて、オートコンプリートを機能させているような気がします。