[英]Passing value to controller action
我试图使用jQuery将两个值传递给以下控制器操作
[HttpPost]
public JsonResult Cancel(Guid Id, string cancelReason)
{
//do something
}
.js文件:
CancelProgram = function (Id) {
//this is basically the value from a select tag placed on the form
var reason = $("#CancelReasons").val();
alert(reason);
Origin.ajax({
url: '/ZYX/Cancel?Id=' + Id,
type: 'POST',
dataType: 'json',
data: { cancelReason: reason },
success: function (data) {
alert('success!');
}
});
};
});
action方法中的cancelReason值始终为null。 关于为什么这不起作用的任何指示?
代码的另一部分肯定有问题。 我首先通过硬编码值并确保它们被正确发送来发送正常的AJAX请求:
$.ajax({
url: '/ZYX/Cancel',
type: 'POST',
data: {
id: '24fe0c97-c227-4312-91fc-6e651df8b64f',
cancelReason: 'some reason'
},
success: function (data) {
alert('success!');
}
});
确保这个简单的示例工作后,通过使用变量开始使其更加动态。 这样您就可以缩小范围并找到问题的根源。 另外,我强烈建议您使用一个javascript调试工具,如FireBug。 它允许您在控制台中查看是否存在javascript错误以及许多其他有用信息,例如发送的确切请求/响应。
在成功的AJAX请求的情况下,您应该在FireBug的“网络”选项卡中看到:
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: en-us,en;q=0.5
Connection: keep-alive
Content-Length: 64
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0) Gecko/20100101 Firefox/10.0
X-Requested-With: XMLHttpRequest
id=24fe0c97-c227-4312-91fc-6e651df8b64f&cancelReason=some+reason
注意如何使用application/x-www-form-urlencoded
发送id
和cancelReason
参数。
您应该学会调试这些问题,调试它们的方法是使用适当的工具。
关于什么
url: '/ZYX/Cancel',
type: 'POST',
dataType: 'json',
data: { Id: Id, cancelReason: reason },
success: function (data) {
alert('success!');
}
您需要提供您指定的路线,这可能有助于更好地回答,但这应该适用于现在:
url: '/ZYX/Cancel?Id=' + Id + '&cancelReason=' + reason,
并且,根本不传递任何数据。 如果这不起作用,那么我会使用fiddler或其他网络观察程序加载项或调试程序来验证原因是否为有效值。
尝试在Global.asax文件中设置路由,例如:
routes.MapRoute(
"Cancel", // Route name
"{controller}/{action}/{id}/{cancelReason}", // URL with parameters
new { controller = "YourController", action = "Cancel", id = UrlParameter.Optional, cancelReason = UrlParameter.Optional } // Parameter defaults
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.