【发布时间】:2016-09-21 20:59:21
【问题描述】:
我正在尝试实现与 OP in this post 提到的相同的结果但是当我尝试通过检查它是否是我的 Index 操作中的 AJAX 请求来呈现部分视图时,它的评估结果为 false。
我的索引视图:
@using (Ajax.BeginForm("Index", "Home",
new AjaxOptions()
{
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "restaurantList"
}))
{
<input type="search" name="searchTerm" />
<input type="submit" value="Search By Name" />
}
@Html.Partial("_Restaurant",Model)
我的部分观点:
<div id="restaurantList" style="border:2px dotted red; padding-left:2em; margin-top:4px;">
@foreach (var item in Model)
{
<div>
<h4>@item.Name</h4>
<div>@item.City, @item.Country</div>
<div>@item.CountOfReviews</div>
<hr />
</div>
}
</div>
我的索引操作:
public ActionResult Index(string searchTerm = null)
{
var model = ...//Building model object here
if (Request.IsAjaxRequest())
{
return PartialView("_Restaurant", model);
}
return View(model);
我不想深入使用任何 jQuery 或 javascript,因为我正在学习 ASP.NET MVC,并且想知道为什么我采用的方法不起作用?丹尼斯在我引用的帖子中的第二个答案也提出了类似的方法。
谁能告诉我我做错了什么? 谢谢
【问题讨论】:
-
您是否包含相关脚本以使用
Ajax.BeginForm()-jquery-{version}.js和jquery.unobtrusive-ajax.js? (你不能在没有 jquery 或 javascript 的情况下进行 ajax 调用) -
还要注意你的
<div id="restaurantList" ... >元素应该在主视图中,而不是部分视图中。 -
@StephenMuecke 是的,我有。我已经捆绑了所有必需的库并将它们添加到 BundleConfig.cs 并在共享布局视图中引用。
-
如果
if (Request.IsAjaxRequest())评估为false则意味着您的脚本未正确加载并且您进行了正常提交 -
@StephenMuecke:我确实更改了主视图中的
<div id="restaurantList"...>元素,结果仍然相同。
标签: ajax asp.net-mvc