Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET-Ajax.BeginForm使用参数成功回调_C#_.net_Ajax_Callback - Fatal编程技术网

C# ASP.NET-Ajax.BeginForm使用参数成功回调

C# ASP.NET-Ajax.BeginForm使用参数成功回调,c#,.net,ajax,callback,C#,.net,Ajax,Callback,我想在OnSuccess回调中添加更多参数(,但保留ajax上下文变量)。 我所做的是: using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "new function(arg){HandleBasicForm(arg , 'MyCustomVariable')}", ... JS函数: function HandleBasicForm(ajaxContext , myCustomVariable)

我想在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
为空。

如何做到这一点?

既然您使用的是
get_response()
我猜您没有使用不引人注目的javascript内容(在MVC3中,您设置了
HtmlHelper.UnobtrusiveJavaScriptEnabled=false
),并且您正在引用MicrosoftJAX、js和MicrosoftMvcAjax.js文件。如果是这种情况,您只需要删除
new
关键字

 using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "function(arg){HandleBasicForm(arg , 'MyCustomVariable')}"})
如果您在jquery.unobtrusive-ajax.js中使用MVC3 unobtrusive javascript支持,那么您可以使用隐式可用的
xhr
数据
变量

using (Ajax.BeginForm("Register", new AjaxOptions() { OnSuccess = "HandleBasicForm(data, 'MyCustomVariable')"})
在处理程序中,不需要使用
get\u response().get\u object()
,因为反序列化的JSON数据将直接传递给处理程序

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

OnSuccess
从服务器接收
数据、状态、xhr

OnSuccess = "myJsMethod(data, status, xhr)"
然后它的等效JavaScript方法是:

 function myJsMethod(data, status, xhr) {
}
现在,控制器应返回:

return Json(new { param1 = 1, param2 = 2, ... }, JsonRequestBehavior.AllowGet);

然后在
myJsMethod
中,您将可以访问
data.param1
等等。

我不明白您应该如何使用“data”参数。它只是为我抛出了一个例外,说“数据没有定义”。@rossisdead我知道这很旧,但我知道很多人可能也在想同样的事情。
数据
参数是从服务器返回的数据,通常是MVC或Web API控制器。此结果可以作为
JsonResult
返回,也可以简单地作为
Json
返回,您可以从结果中访问该对象的属性。@BarryTormey如果我返回
PartialViewModel
并需要访问其某些属性,该怎么办?我在哪里可以找到此信息的源?例如,OnFailure的标准参数是什么?以其源代码@github为例: