C# ASP.NET-Ajax.BeginForm使用参数成功回调
我想在OnSuccess回调中添加更多参数(,但保留ajax上下文变量)。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)
我所做的是:
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为例: