1

私がする必要があるのは、部分的なビューで結果を表示する簡単な検索ページを作成することです。検索テキストボックスと検索送信ボタンがあります。オンラインで見つけたチュートリアルに従って、実装が非常に簡単で迅速に思えますが、ここに何かが欠けています。検索ボタンをクリックしても何も起こりません。私が間違っていることや行方不明になっていることについてのアイデアは大歓迎です。

メインのレイアウトページに次のスクリプトファイルを含めます

    @Script("jquery-1.5.1.min.js")
    @Script("modernizr-1.7.min.js")
    @Script("jquery-ui.min.js")
    @Script("jquery.unobtrusive-ajax.js")
    @Script("jquery.validate.min.js")
    @Script("jquery.validate.unobtrusive.min.js")

    @helper Script(string scriptName)
    {
        <script src="@Url.Content("~/Scripts/" + scriptName)" type="text/javascript">    </script>
    }

メインの検索ビューはAdminMenuと呼ばれます。これは、私のプロジェクトのAdminというエリアの下に表示されます。

ここに画像の説明を入力してください

私のメインビューの次のコード

    @using (Ajax.BeginForm("AdminSearch", "AdminMenu", new {area = "Admin"}, new AjaxOptions { HttpMethod = "GET", InsertionMode = InsertionMode.Replace, UpdateTargetId = "searchResults"}))
{
    <input type="text" name="q" />
    <input type="submit" value="Search"/>
}

<div id="searchResults">

</div>

部分ビューのコード_adminSearch

<div id="searchResults">
    <div class="entitybox">
        @{
            var grid = new WebGrid(
                Model,
                defaultSort: "Name", canPage: false
                );
        }

        @grid.GetHtml(
            tableStyle: "_tableGrid",
            columns: grid.Columns
                (
                    grid.Column("Name", "Name", item => @Html.ActionLink((string)item.Name, "SelectRecord", new { controller = "Menu", agencyKey = item.Id, name = item.Name }))
                )
           )

    </div>
</div>

コントローラーのコード

public class AdminMenuController : Controller
    {

        public ActionResult AdminMenu()
        {
            return View();
        }

        public PartialViewResult AdminSearch(string q)
        {

            Records results = AgencyBusiness.GetAdminSearch(q);
            return PartialView("_adminSearch", results);

        }

    }

検索ボタンをクリックしても何も起こりません。コントローラクラスのAdminSearchメソッドにブレークポイントを設定すると、ヒットすることはありません。

よろしくお願いします。

ここに画像の説明を入力してください

4

3 に答える 3

0

この問題を解決しました。奇妙なこと。共有ビューを使用して、次の行を使用してビューの上部に現在のユーザーを表示しました。

@RenderPage("~/Views/Shared/_LoginBar.cshtml")

主な問題は、@Ajax.BeginForm関数がフォームタグをブラウザに出力しなかったことです。代わりに次の行を使用することで、フォームタグがHTMLソースに表示され、ajax関数が機能しました。

@Html.Partial("~/Views/Shared/_LoginBar.cshtml")
于 2012-04-10T20:15:01.283 に答える
0

問題は、メインビューと部分ビューの両方に「searchResults」というdivがあることだと思います。Ajaxはおそらく混乱しています。

于 2012-04-06T20:21:51.010 に答える
0

Ajax.BeginFormを使用する場合は、MicrosoftAjax.jsファイルを含める必要があります。

于 2012-04-06T20:27:06.423 に答える