我面临的问题花了8个多小时但却无法找到解决方案。 我正在尝试在MVC4中实现ajax功能。 我在索引视图中跟踪代码。
@using (Ajax.BeginForm(
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "resturantList"
}
))
{
<input type="search" name="searchTerm" />
<input type="submit" value="Search By Name" />
}
<div id="resturantList">
@foreach (var item in Model)
{
<div>
<h4>@item.Name</h4>
<div>@item.City, @item.Country</div>
<div>Reviews: @item.CountOfReviews</div>
<hr />
</div>
}
</div>
以下是点击搜索按钮时呈现的html。
我已经检查过firebug的脚本文件引用,即使它们已包含在内
<script src="/Scripts/jquery-2.1.0.js">
<script src="/Scripts/jquery-ui-1.10.4.js">
<script src="/Scripts/jquery.unobtrusive-ajax.js">
<script src="/Scripts/jquery.validate.js">
<script src="/Scripts/jquery.validate.unobtrusive.js">
试图删除
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
来自web.config文件的解决了上述问题,但它也禁用了客户端验证。
答案 0 :(得分:3)
您没有告诉表单发布哪个控制器的操作数据,这导致问题,这样做,传递控制器和操作名称:
@using (Ajax.BeginForm(
"Action", "Controller",
new AjaxOptions
{
HttpMethod = "get",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "resturantList"
}
))
{
<input type="search" name="searchTerm" />
<input type="submit" value="Search By Name" />
}
<div id="resturantList">
@foreach (var item in Model)
{
<div>
<h4>@item.Name</h4>
<div>@item.City, @item.Country</div>
<div>Reviews: @item.CountOfReviews</div>
<hr />
</div>
}
</div>
第二件事,确保你正在返回一个局部视图,如果完整视图正在退回,这也会导致问题。在你查看它时这样做:
@{
Layout = null
}
实际上你必须在ajax调用的响应中返回部分视图