0

我一直在冲浪,但仍然无法弄清楚我的代码有什么问题以及为什么它不起作用。

代码如下:

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" />
}

Index 视图有一个 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。我的代码有什么问题?

4

1 回答 1

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在部分中使用了 an 而不是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。

于 2012-12-23T16:05:15.723 回答