小编典典

ASP.NET-Ajax.BeginForm OnSuccess使用参数进行回调

ajax

我想在我的OnSuccess回调中添加更多参数( 但保留ajax上下文变量 )。
我所做的是:

 using (Ajax.BeginForm("Register", new AjaxOptions() {
   OnSuccess = "new function(arg){HandleBasicForm(arg , 'MyCustomVariable')}",
    ...

JS函数:

function HandleBasicForm(ajaxContext , myCustomVariable){
            var content = ajaxContext.get_response().get_object();
            ....
        }

ajaxContext为空。
我怎么做?


阅读 471

收藏
2020-07-26

共1个答案

小编典典

由于正在使用,get_response()我猜测您没有使用不引人注意的javascript东西(在MVC3中,您已设置HtmlHelper.UnobtrusiveJavaScriptEnabled = false),而是在引用MicrosoftAjax,js和MicrosoftMvcAjax.js文件。如果是这种情况,您只需删除new关键字。

 using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "function(arg){HandleBasicForm(arg , 'MyCustomVariable')}"})

如果您通过jquery.unobtrusive-ajax.js使用MVC3非侵入式javascript支持,则可以改用隐式可用xhrdata变量。

using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "HandleBasicForm(data, 'MyCustomVariable')"})

在您的处理程序中,get_response().get_object()由于反序列化的JSON数据将直接传递到您的处理程序中,因此无需使用。

function HandleBasicForm(data, myCustomVariable){
    var someValue = data.someProperty; //work with data object returned
    ....
}
2020-07-26