ASP.NET MVC5 アプリケーションに検索ページがあります。隅にドロップダウンがあり、「ユーザー検索」を選択すると、ユーザーの検索フィルターが表示されます。「タスク検索」を選択すると、タスクの検索フィルターが表示されます。
これらのフィルターは部分ビューに読み込まれ、Ajax.BeginForm
. したがって、オプションが選択されると、まったく新しいフォームが読み込まれます。
@using (Ajax.BeginForm("SearchUsers", "Search", "Search_default",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults",
OnBegin = "StartSpinner",
OnComplete = "EndSpinner"
}))
{
//Form
}
searchResults
div はページ上にあるため、フォームはメイン ページの div のコンテンツを別の部分ビューの形式のデータで更新しています。
この例のユーザーでは、デフォルトとして設定した検索オプションは問題なく機能します。検索結果が戻ってくると、意図したとおりに div コンテンツを置き換えます。
次に、上記のフォームを、似ているが別のアクションを指すフォームに置き換えるものに切り替えるとTask Search
、検索結果に対して返される部分ビューが別のページに表示されます。
searchResults
フォームを動的にロードしているためだと考えていますが、divを認識しなくなりましたが、それはうまくいかない可能性があります。これは unobstrusive.ajax.js がロードされていない場合にも発生する可能性がありますが、検索フォームを変更するまで結果は正常に機能します。