我的网站中有两个相同的 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
有谁知道如何解决这一问题?