0

私の Web サイトには 2 つの同一の AJAX フォームがあります (唯一の違いは、それらが含まれている方法です)。目立たない AJAX をテンプレートに含めた場合にのみ機能するフォームが 1 つあります。他の形式は、目立たない AJAX を含めない場合にのみ機能します。機能しないフォームは次のとおりです。

@model ViewModels.Book.FindNewBookViewModel
@{
    AjaxOptions options = new AjaxOptions
                              {
                                  HttpMethod = "Get",
                                  UpdateTargetId = "book-overview", 
                                  Url = Url.Action("BooksData", "Book"),
                                  LoadingElementId = "loading", 
                                  LoadingElementDuration = 2000,
                              };
}

@using (Ajax.BeginForm("BooksData", "Book", options, new { @class = "form-search" }))
{
    @Html.AntiForgeryToken()

    <div class="row-fluid">
        @Html.TextBoxFor(x => x.Search, new { autofocus = "autofocus" })
        <input type="submit" value="Search" class="btn btn-primary btn-small"/>
    </div>

    <div id="loading" class="loading">
        <p>Searching...</p>
    </div>

    <div id="book-overview" class="row-fluid">
        @Html.Action("BooksData", "Book", new { search = Model })
    </div>
}

そして、このフォームからの呼び出しを処理するコントローラー メソッド:

[Authorize]
public ActionResult BooksData(FindNewBookViewModel viewModel)
{
    if (viewModel.Search == null)
    {
        return PartialView();
    }

    var data = _bookService.FetchBooks(viewModel.Search);

    return data != null ? PartialView(data) : PartialView();
}

フォームをロードすると、アクション メソッドに対して空のリクエストが実行されます。しかし、何かを入力して送信ボタンをクリックしても、リクエストは実行されません。

作業フォームと非作業フォームの唯一の違いは、作業フォームが Html.Action() によって別のページに含まれており、非作業フォームには直接移動できる独自のページがあることです。

これらは、_layout にロードした私の JS ライブラリです。

jquery-2.0.0.min.js
jquery.unobtrusive-ajax.min.js
jquery.validate.min.js
jquery.validate.unobtrusive.min.js

これを修正する方法を知っている人はいますか?

4

1 に答える 1

0

依存関係を更新すると、問題が解決しました。これは私のせいではなく、控えめな AJAX ライブラリのバグだと思います。

于 2013-05-22T20:41:34.457 に答える