[英]ASP.NET - Ajax.BeginForm OnSuccess call back with params
我想在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
为null。
我怎么做?
由于您使用的是get_response()
所以我猜您不是在使用非干扰性的javascript东西(在MVC3中,您已将HtmlHelper.UnobtrusiveJavaScriptEnabled = false
设置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支持,则可以改用隐式可用的xhr
和data
变量。
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
,依此类推。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.