代码之家  ›  专栏  ›  技术社区  ›  user2232861

如何在mvc中使用ajax get或post将数据从View传递到Controller

  •  4
  • user2232861  · 技术社区  · 11 年前

    我正试图使用ajax将数据从View传递到Controller Action Method,如下所示:-

    我有一个用户的Membership实例,我使用viewbag从另一个控制器传递到下面的这个视图,有点像这个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
    }
    

    如果我通过do-ajaxpost,我会在 BeginExecuteCore(AsyncCallback callback, object state) 声明“没有为此对象定义无参数构造函数。”控制甚至没有进入我的操作方法。

    如果我删除参数 (MembershipUser MyUser) 从Action方法发布到Action方法,但随后

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

    问题是你不能通过 我的用户 作为JQuery的参数,因为JQuery不知道该类 成员身份用户 请记住,JQuery是一种客户端语言 成员身份用户 在服务器端的C#中定义。

    您可以从 我的用户 反对 过程 操作使用 得到 如下(假设 我的用户 对象具有和 身份证件 一个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
    }
    

    我希望它能帮助你!