我一直在冲浪,仍然无法弄清楚我的代码有什么问题,为什么它不起作用。
代码是下一个:
public ActionResult FindUser()
{
if (Request.IsAjaxRequest())
{
return PartialView();
}
return View();
}
加载PartialView,允许按名称查找用户:
@using (@Html.BeginForm("Find", "User"))
{
@Html.TextBoxFor(u => u.UserName);
@Html.HiddenFor(u => u.UserName);
<input type="submit" value="Find" />
}
索引视图有一个Actionlink:
@Ajax.ActionLink("Find user","FindUser",new AjaxOptions { UpdateTargetId = "forAjax", InsertionMode = InsertionMode.Replace})
<div id="forAjax"></div>
我已经包含在视图中
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
以及在我的配置中启用了这些
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
但它仍然在新的“窗口”中加载我的PartialView,但不在“查找用户”链接下方。我的浏览器启用了Javascript。我的代码出了什么问题?
答案 0 :(得分:3)
确保您已包含jquery
,并且您已经 之前包括jquery.unobtrusive-ajax.js
:
<script src="@Url.Content("~/Scripts/jquery-1.7.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
同样在您的局部视图中,您有一个标准表单,而不是AJAX表单。提交此表单时,不会有任何AJAX请求。如果您希望使用AJAX请求提交此表单,请确保您在部分代码中使用了Ajax.BeginForm
而不是Html.BeginForm
:
@using (Ajax.BeginForm("Find", "User", new AjaxOptions { UpdateTargetId = "forAjax", InsertionMode = InsertionMode.Replace }))
{
@Html.TextBoxFor(u => u.UserName);
@Html.HiddenFor(u => u.UserName);
<input type="submit" value="Find" />
}
您应该检查的另一件事是您在浏览器中使用的javascript调试工具的网络和控制台选项卡。在网络选项卡中查找javascript错误以及可能的404。