【问题标题】:how to pass data from View to Controller using ajax get or post in mvc with parameters如何使用 ajax get 将数据从 View 传递到 Controller 或使用参数在 mvc 中发布
【发布时间】: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 方法,但是

  1. 在这种情况下,如果没有参数,我如何将“MyUser”从该视图传递给控制器​​?
  2. 路线有问题吗?如果是,路线应该是什么?
  3. 或者我应该使用 get 还是 post ?
  4. 我应该在哪里将 MyUser 转换回 MembershipUser ?

【问题讨论】:

    标签: asp.net-mvc jquery parameter-passing viewbag asp.net-mvc-views


    【解决方案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”类型的数据。它必须是一个字符串...
    猜你喜欢
    • 1970-01-01
    • 2015-02-28
    • 2023-01-24
    • 2019-06-15
    • 1970-01-01
    • 2020-02-17
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多