質問

を持っています 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;
    });
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top