【问题标题】:passing multiple object to controller using ajax in ASP.NET MVC在 ASP.NET MVC 中使用 ajax 将多个对象传递给控制器
【发布时间】:2012-01-06 06:59:13
【问题描述】:

我从事一个 ASP.NET MVC 项目。 我必须将两个参数传递给控制器​​中的操作。第一个是可序列化的对象,第二个是整数。 我第一次尝试只传递一个参数,即可序列化对象。没问题,但是当我添加第二个参数时,序列化对象没有传递(空值),但是整数参数传递成功。

这是我的动作样子:

    [HttpPost]
    public bool MyAction(MySerializableObject myData, int intParameter)
    {..}

这就是我尝试传递参数的方式:

 $('#submit-button').click(function () {        
    var formData = $("#MyForm").serialize();
    var posturl = '/MyController/MyAction';
    var retUrl = '/MyCOntroller/SomeWhere';
    ...
    $.post(posturl, { myData: formData, intParameter: '5005' }, function (result) {
        if (result == 'True') {
            location.href = retUrl;
        }
        else {
            alert('failed');
        }
    });
});

谁能解释一下?怎么会发生以及如何解决问题?

谢谢。

【问题讨论】:

    标签: javascript ajax asp.net-mvc model-view-controller post


    【解决方案1】:

    这可能有点远,但是您是否尝试过交换参数的顺序 (IE public bool MyAction(int intParameter, MySerializableObject myData) 我问的原因是您的客户端序列化可能不起作用完全正确。

    如果不是,最好的办法是查看实际发布到服务器的内容。在 webkit 中打开 firebugs net 选项卡或类似选项,然后查看实际返回服务器的内容。

    【讨论】:

      【解决方案2】:

      您可以使用following plugin (serializeObject) 代替.serialize

      var formData = $('#MyForm').serializeObject();
      // add some data to the request that was not present in the form
      formData['intParameter'] = 5005;
      
      var posturl = '/MyController/MyAction';
      var retUrl = '/MyCOntroller/SomeWhere';
      ...
      $.post(posturl, formData, function (result) {
          if (result == 'True') {
              location.href = retUrl;
          }
          else {
              alert('failed');
          }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-16
        • 1970-01-01
        • 2018-05-02
        • 2012-04-19
        • 2019-02-16
        • 1970-01-01
        相关资源
        最近更新 更多