1

RazorHTMLを使用したMVC4でjqueryuiオートコンプリートを使用しています。ハードコードされた値で問題なく使用できますが、データベースに接続して、表示される値をハードコードする必要がないようにする方法を考えていました。

4

2 に答える 2

2

MVC4を使用している場合は、ビューからアクセスできるアクションを作成する必要があります(アクションのURLをレンダリングします)。次に、オートコンプリートjqueryを設定するときに、これ(url)をソースとして設定する必要があります。

リモートソースのドキュメントはこちらです。

MVCの場合、次のようになります。

$( "#birds" ).autocomplete({
      source: "/MyController/OptionsAction",
      minLength: 2,
      select: function( event, ui ) {
        log( ui.item ?
          "Selected: " + ui.item.value + " aka " + ui.item.id :
          "Nothing selected, input was " + this.value );
      }
    });
于 2013-03-24T23:03:14.963 に答える
0

ビューが1つまたは10のフォルダーの深さであっても、MVCの@ URL.Actionを使用して、URLが正しくエンコードされていることを確認することをお勧めします。

上記の例「/MyController/ OptionsAction」では、ビューを1つ下のフォルダーに移動した場合は機能しませんが、@URL.Actionは引き続き機能します。

ajax呼び出しの形式は次のようになっていることに注意してください。

  1. データの送信:

url(投稿先)

データ(投稿するデータ)

type(行われる要求のタイプ:POSTまたはGETまたはPUT。空白のままの場合のデフォルトはGETです)

contentType(サーバーにデータを送信するときに使用するコンテンツタイプ。必要な場合を除いて変更しない方がよい)

  1. データ受信中:

dateType(期待しているデータ型:この場合はjson)

成功(リクエストが成功した場合に呼び出される関数)

        $('#Country').autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '@Url.Action("GetCountries", "User")',
                data: "{ 'CountrySearch': '" + $('#Country').val() + "' }",
                dataType: "json",
                type: "POST",
                contentType: 'application/json',
                success: function (data) {
                    response($.map(data, function (item) {
                        return JSON.parse(item);
                    }))
                },
                error: function (jqXhr, textStatus, errorThrown) { alert("Error '" + jqXhr.status + "' (textStatus: '" + textStatus + "', errorThrown: '" + errorThrown + "')"); },
            })
        },
        minLength: 1,
    });

国が次のようなデータベース呼び出しからデータを返す場合:

{"国":"["オーストラリア"、"オーストリア "、"カナダ "、"米国 "]"}

    public JsonResult GetCountries(string CountrySearch)
    {
        string[] Countries = new AddressManager().GetCountries(CountrySearch);
        string serialisedList = new JavaScriptSerializer().Serialize(Countries);
        return new JsonResult { Data = new { Countries = serialisedList }, ContentEncoding = Encoding.UTF8, ContentType = "text/plain", JsonRequestBehavior = JsonRequestBehavior.AllowGet };
    }
于 2014-12-26T12:27:12.830 に答える