我的网站上有两个相同的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
有谁知道如何解决这个问题?
答案 0 :(得分:0)
更新我的依赖项解决了这个问题。猜猜这不是我的错,而是Unobtrusive AJAX库中的一个错误。