AJAXアクションリンクをクリックしようとすると、HttpGet
を返し、HTMLをdivに押し込むアクションメソッドにPartialViewResult
を実行する必要があります。
私の見解は次のとおりです。
<div id="admin-options" class="admin"></div>
@Ajax.ActionLink("Show Admin Options", "ShowOptions", "Post", new { area = "Admin" }, new AjaxOptions { UpdateTargetId = "admin-options", HttpMethod = "GET" })
アクションメソッドは次のとおりです。
public class PostController : Controller
{
[HttpGet]
[Authorize(Roles="Admin")]
public PartialViewResult ShowOptions()
{
return PartialView();
}
}
生成されるHTMLは次のとおりです。
<a data-ajax="true" data-ajax-method="GET" data-ajax-mode="replace" data-ajax-update="#admin-options" href="/Admin/Post/ShowOptions">Show Admin Options</a>
私には問題ありません。
ただし、AJAX呼び出しを行う代わりに、ブラウザURLを介して通常のHTTP GETを実行し、/ Admin/Post/ShowOptionsにリダイレクトします。
明らかに何かが足りない-しかし何?
控えめなAJAX JavaScriptライブラリがページに含まれていることを確認してください。
<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script>
また、Razorビューエンジンを使用している場合...
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
AjaxOptionsにInsertionModeオプションを含めることもできます。除外するとデフォルトの動作になるはずですが、このようなことを明示的に定義する方が良いでしょう。