ajax.actionlink ajaxoptionsコールバックの問題(asp.net mvc 3)
-
22-10-2019 - |
質問
を持っています Ajax.ActionLink
内側 PartialView
そのようです:
@Ajax.ActionLink(Model.IsVisible ? "Disable" : "Enable", "ToggleVisibility", "Review", new { area = "Admin", id = Model.Id }, new AjaxOptions { HttpMethod = "POST", OnComplete = "onComplete_AdminReviewOption" })
ハンドリングJavaScript関数(今のところメインビューでインラインで宣言):
function onComplete_AdminReviewOption(ajaxContext) {
var jsonObject = ajaxContext.get_object();
}
JavaScriptエラーがスローされます:
Object# has not definition for get_object()
.
これらのJavaScriptメソッドはその一部だと思いました MicrosoftAjax.js
/ MicrosoftMvcAjax.js
どちらも私が自分のページに含めたスクリプト。
これらのヘルパー方法がどのライブラリが存在するかを誰かが確認できますか?
必要なスクリプトをロードします Layout.cshtml
ファイル、次に、上記のPartialViewをレンダリングするためにAJAXコールを行います。
そのため、その機能を処理する頃には、ライブラリはすでにロードされています。これが、混乱している理由です。
何か案は?
解決
ASP.NET MVC 3とRazorを使用しているようです。このバージョンでは、jQueryはデフォルトのクライアントスクリプトフレームワークです。もういや MicrosoftAjax.js
(ありがとう神様)。それで:
function onComplete_AdminReviewOption(ajaxContext) {
var jsonObject = eval(ajaxContext);
}
また、含めることを忘れないでください jquery.unobtrusive-ajax.js
.
Web.configで次のように設定することで、レガシーのものを使用したい場合:
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
デフォルトでは、この変数はtrueに設定されています。
個人的には、標準リンクを使用することを好みます。
@Html.ActionLink(
Model.IsVisible ? "Disable" : "Enable", // <-- this should probably be as a property directly in the view model, ex. Model.LinkText
"ToggleVisibility",
"Review",
new { area = "Admin", id = Model.Id },
new { id = "myLink" }
)
別のJavaScriptファイルでjQueryを使用してそれらをajaxifyします。
$(function() {
$('#myLink').click(function() {
$.post(this.href, function(result) {
// result is already a javascript object, no need to eval
});
return false;
});
});
所属していません StackOverflow