我正在尝试使用 ajax 将数据从 View 传递到 Controller 操作方法,如下所示:-

我有用户的 Membership 实例,我使用 viewbag 从另一个 Controller 传递到下面的这个 View ,有点像这个 ViewBag.MyUser = MyUser;

现在我想使用 ajax 将“MyUser”传递给另一个 Controller 形成这个 View ,如下所示。

 $('#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”从该 View 传递给 Controller ​​?
  • 路线有问题吗?如果是的话应该是什么路线?
  • 还是我应该使用 get 或 post ?
  • 我应该在哪里将 MyUser 转换回 MembershipUser ?
  • 最佳答案

    问题是您不能将 MyUser 作为参数从 JQuery 传递,因为 JQuery 不知道类 MembershipUser。请记住,JQuery 是一种客户端语言,而 MembershipUser 是在服务器端用 C# 定义的。

    您可以使用 GET 将您需要的属性从 MyUser 对象传递到 Process 操作,如下所示(假设 MyUser 对象具有和 ID 一个名称):

    $('#Link').click(function () {
        $.ajax({
            url: http://localhost/Account/Process,
            type: 'GET',
            data: {
                    id: "@ViewBag.MyUser.ID",
                    name: "@ViewBag.MyUser.Name"
                  },
            success: function () {
            },
            error: function () {
            }
        });
    

    Action 应该是这样的:
    public ActionResult Process(int id, string name)
    {
       //Do something
    }
    

    我希望它能帮助你!

    关于asp.net-mvc - 如何使用 ajax get 或 post 在 mvc 中使用参数将数据从 View 传递到 Controller ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15931641/

    10-12 12:38