1

私は次のフォームを持っています、私がしたいのは、人々が検索ボタンをクリックすると、リクエストがサーバーにファイルされ、サーバーが新しい結果のセットを返し、divを再レンダリングして新しいものを提示することです結果

@using (Ajax.BeginForm("Search", new AjaxOptions { HttpMethod = "Post", UpdateTargetId = "DivToUpdate" }))
        {
            <div style="margin: 10px 50px 5px 50px;">
                @Html.TextBox("instrument", (string)ViewBag.DefaultInstrumentStr)
                &nbsp;&nbsp;&nbsp;
                <input type="submit" value="Search" />
            </div>
        }
        <div id="DivToUpdate" style="width: 100%; display: none;">
            @if (Model != null)
            {
                @Html.Partial("_InstrumentList", @Model);
            }
            else
            {
                <span>Loading ....</span>
            }
        </div>

これが私のコントローラーの実装です:

public ActionResult Search(string instrument)
        {
            // ... base on the input perform certain action to generate a list of result

            return PartialView("_InstrumentList", instruments);
        }

それを実行すると、検索をクリックした後、ブラウザに部分的なビューのみが表示され、データはdivを更新しません。

誰かが私が何を間違えたのか分かりますか?ありがとう。

4

3 に答える 3

1

誰かが私が何を間違えたのか分かりますか?

jquery.unobtrusive-ajax.jsスクリプトを自分のページに参​​照するのを忘れました:

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
于 2012-05-31T07:32:00.050 に答える
1

いくつかのスクリプトを参照する必要があります。

MVC3の場合(UnobtrusiveJavaScriptEnabledをtrueに設定):

jquery.unobtrusive-ajax.js

MVC2およびMVC3の場合(UnobtrusiveJavaScriptEnabledをfalseに設定):

MicrosoftMvcAjax.js

違いについては、これを見ることができます:ASP.NETMVC3での目立たないクライアント検証

于 2012-05-31T07:55:37.133 に答える
0

更新しようとしているものは、角かっこで囲まれているdiv必要があります。Ajax.BeginForm

于 2012-05-31T07:32:14.950 に答える