ASP.. NET - Ajax.BeginForm OnSuccess回调参数

本文关键字:OnSuccess 回调 参数 BeginForm Ajax NET ASP | 更新日期: 2023-09-27 18:13:45

我想添加更多的参数到我的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为空
我怎么做呢?

ASP.. NET - Ajax.BeginForm OnSuccess回调参数

既然你使用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. unobtrusiu -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
    ....
}

OnSuccess从服务器接收data, status, xhr:

OnSuccess = "myJsMethod(data, status, xhr)"

对应的JavaScript方法是:

 function myJsMethod(data, status, xhr) {
}
现在你的控制器应该返回:
return Json(new { param1 = 1, param2 = 2, ... }, JsonRequestBehavior.AllowGet);

然后在myJsMethod中,你可以访问data.param1,等等