如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布
Posted
技术标签:
【中文标题】如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布【英文标题】:how to pass data from View to Controller using ajax get or post in mvc with parameters 【发布时间】:2013-04-02 15:16:17 【问题描述】:我正在尝试使用 ajax 将数据从视图传递到控制器操作方法,如下所示:-
我有用户的 Membership 实例,我使用 viewbag 从另一个控制器传递到下面的这个视图,有点像这个 ViewBag.MyUser = MyUser;
现在我想使用 ajax 将“MyUser”传递给另一个控制器,如下所示。
$('#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
如果我通过 do ajax post,我会在 BeginExecuteCore(AsyncCallback callback, object state)
内部收到错误,指出“没有为此对象定义无参数构造函数。”我的操作方法甚至都没有控制权。
如果我从 Action Method 中删除参数 (MembershipUser MyUser)
,它会发布到 Action 方法,但是
-
在这种情况下,如果没有参数,我如何将“MyUser”从该视图传递给控制器?
路线有问题吗?如果是,路线应该是什么?
或者我应该使用 get 还是 post ?
我应该在哪里将 MyUser 转换回 MembershipUser ?
【问题讨论】:
【参考方案1】:问题是您不能将 MyUser 作为 JQuery 的参数传递,因为 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 ()
);
动作应该是这样的:
public ActionResult Process(int id, string name)
//Do something
希望对你有帮助!
【讨论】:
谢谢!!这有帮助。但我仍然不确定为什么我们不能将“MembershipUser”作为对象发送并将其转换回操作方法。 这是因为不能通过 ajax 传递“object”类型的数据。它必须是一个字符串...以上是关于如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布的主要内容,如果未能解决你的问题,请参考以下文章
限制从drupal 7中的`views_get_view_result()`获取的记录数来进行分页
如何将数据从ajax get方法发送到laravel中的控制器?
如何以 GET 方法将数据从客户端发送到服务器端 - ajax