我正在尝试使用ajax将数据从View传递到Controller Action Method,如下所示: -
我有一个用户的Membership实例,我从另一个控制器传入这个视图,使用的视图有点像这个ViewBag.MyUser = MyUser;
现在我想使用ajax将'MyUser'传递给另一个Controller表单,如下所示。
$('#Link').click(function () {
$.ajax({
url: http://localhost/Account/Process,
type: 'POST',
data: '@ViewBag.MyUser',
success: function () {
},
error: function () {
}
});
我发布的ActionMethod如下
public ActionResult Process(MembershipUser MyUser)
{
//Do somethihng with MyUser
}
如果我传递了ajax post,我在BeginExecuteCore(AsyncCallback callback, object state)
内部得到错误,声明'没有为此对象定义无参数构造函数。'和控制甚至没有达到我的行动方法。
如果我从Action Method中删除参数(MembershipUser MyUser)
,它会发布到Action方法,但是
答案 0 :(得分:9)
问题是您无法从JQuery传递 MyUser 作为参数,因为JQuery不知道类 MembershipUser 。请记住,JQuery是一种客户端语言, MembershipUser 是在服务器端的C#中定义的。
您可以使用 GET 将 MyUser 对象中所需的属性传递给 Process 操作,如下所示(假设 > MyUser 对象具有 ID a 名称):
$('#Link').click(function () {
$.ajax({
url: http://localhost/Account/Process,
type: 'GET',
data: {
id: "@ViewBag.MyUser.ID",
name: "@ViewBag.MyUser.Name"
},
success: function () {
},
error: function () {
}
});
行动应该是这样的:
public ActionResult Process(int id, string name)
{
//Do something
}
我希望它可以帮到你!