如何使用 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# 中定义的。

您可以使用 GETMyUser 对象中所需的属性传递给 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

前端ajax异步传值以及后端接收参数的几种方式

在 ajax 调用中使用 datatable url 属性将参数传递给服务器

get请求如何在url中加入数组参数