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

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

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

我有一个用户的成员(member)实例,我使用 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(AsyncCallbackcallback, object state) 处收到内部错误,指出“没有为此对象定义无参数构造函数”。控制甚至没有出现在我的操作方法中。

如果我从操作方法中删除参数(MembershipUser MyUser),它将发布到操作方法,但随后

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

最佳答案

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

您可以使用 GET 将所需的属性从 MyUser 对象传递到 Process 操作,如下所示(假设 >MyUser 对象具有 IDName):

$('#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
}

希望对你有帮助!

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

相关文章:

variables - 如何从另一个lua文件传递变量?

javascript - 在包含 Flash 的 iFrame 上显示 DIV

javascript - select2 ajax显示结果但无法选择

c# - 我可以遍历 Collection.Request.Form 吗?

.net - 为什么 FormsAuthentication.RedirectFromLoginPage() 以 context.Response.Redirect(..., false) 结尾?

javascript - Bootstrap- slider 无法加载

html - 使用 html 和 ngHref 进行 Angular 翻译

perl - 为什么从@_ 转移的值不是别名?

asp.net-mvc - 为什么 Visual Studio 使用 MVC RC1 打开 ASPX 会崩溃

asp.net - 如何让用户保持登录状态 2 周?