use*_*861 4 asp.net-mvc jquery parameter-passing asp.net-mvc-views viewbag
我试图使用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 () {
}
});
Run Code Online (Sandbox Code Playgroud)
我发布的ActionMethod如下
public ActionResult Process(MembershipUser MyUser)
{
//Do somethihng with MyUser
}
Run Code Online (Sandbox Code Playgroud)
如果我传递了ajax post,我会在内部得到错误, BeginExecuteCore(AsyncCallback callback, object state)声明"没有为此对象定义无参数构造函数." 和控制甚至没有到我的行动方法.
如果我(MembershipUser MyUser)从Action Method中删除参数,它会发布到Action方法,但随后
小智 9
问题是你无法从JQuery 传递MyUser作为参数,因为JQuery不知道类MembershipUser.请记住,JQuery是客户端语言,MembershipUser是在服务器端的C#中定义的.
您可以使用GET将所需的属性从MyUser对象传递给Process操作,如下所示(假设MyUser对象具有,ID为Name):
$('#Link').click(function () {
$.ajax({
url: http://localhost/Account/Process,
type: 'GET',
data: {
id: "@ViewBag.MyUser.ID",
name: "@ViewBag.MyUser.Name"
},
success: function () {
},
error: function () {
}
});
Run Code Online (Sandbox Code Playgroud)
动作应该是这样的:
public ActionResult Process(int id, string name)
{
//Do something
}
Run Code Online (Sandbox Code Playgroud)
我希望它对你有所帮助!
| 归档时间: |
|
| 查看次数: |
22545 次 |
| 最近记录: |