web-dev-qa-db-ja.com

ASP.NET MVC 3(Razor)Ajax.ActionLink-何がおかしいのですか?

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にリダイレクトします。

明らかに何かが足りない-しかし何?

42
RPM1984

控えめなAJAX JavaScriptライブラリがページに含まれていることを確認してください。

<script src="<%=Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")%>" type="text/javascript"></script>
66
Talljoe

また、Razorビューエンジンを使用している場合...

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
48
psy

AjaxOptionsにInsertionModeオプションを含めることもできます。除外するとデフォルトの動作になるはずですが、このようなことを明示的に定義する方が良いでしょう。

1
Nick Albrecht