0

我的网站中有两个相同的 AJAX 表单(唯一的区别是它们包含的方式)。只有当我在模板中包含不显眼的 AJAX 时,一种形式才有效。另一种形式仅在我不包含不显眼的 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();
}

当我加载表单时,它会对 action 方法执行一个空请求。但是当我填写一些内容并单击提交按钮时,没有执行任何请求。

工作表单和非工作表单之间的唯一区别是工作表单通过 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

更新我的依赖项解决了这个问题。猜猜这不是我的错,而是 Unobtrusive AJAX 库中的一个错误。

于 2013-05-22T20:41:34.457 回答