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

インデックスビューにはアクションリンクがあります。

@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、パーシャルで次の代わりにを使用していることを確認して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" />
}

チェックアウトする必要があるもう1つのことは、ブラウザで使用しているjavascriptデバッグツールの[ネットワーク]タブと[コンソール]タブです。[ネットワーク]タブでjavascriptエラーと可能性のある404を探します。

于 2012-12-23T16:05:15.723 に答える