2015-01-09 24 views
0

我有以下代碼:型號不傳遞給控制器​​的動作

<script type="text/javascript"> 
     $('#btnConfirmAddition').click(function() { 
      var contractorId = $("#contractorId").val(); 
      var contactPerson = $("#addNewContactPersonForm").serialize(); 
      $.ajax({ 
       url: '@Url.Action("AddContactPerson", "Contractors")', 
       type: "GET", 
       data: { newContactPerson: contactPerson, contractorId: contractorId }, 
       //data: contactPerson, 
       success: function (data) { 
        $("#myModal").modal('hide'); 
        toastr.success("Success"); 
        location.reload(); 
       }, 
       error: function (data) { 
        $("#errorArea").html(showError(data.ErrorMessage)); 
        toastr.error(data.errorMessage); 
       } 
      }); 
      return false; 
     }); 
    </script> 

    public JsonResult AddContactPerson(ContactPerson newContactPerson, string contractorId) 
    { 
    //Some code 
    } 

當我在Ajax調用如上傳遞參數,我newContactPerson是零和contractorId包含相應的數據。 然而,當從控制器的作用去除contractorId參數,並在Ajax調用傳遞參數如下:

data: contactPerson 

它的工作原理。我想知道爲什麼?有人可以幫幫我嗎?

+2

看起來這應該是一個'PUT'或'POST' - 一個'GET'爲AddContactPerson似乎是錯誤的。 – tymeJV 2015-01-09 21:57:13

+0

嘗試'var contactPerson = $(「#addNewContactPersonForm」)。serializeArray();' – Musa 2015-01-09 21:58:17

+0

我的contactPerson變量很好,它包含正確的數據。我也將它更改爲serializeArray,但現在,對象不爲空,但它的所有字段都爲空(實際上它們不是空的,但由我填充) – 2015-01-09 22:00:44

回答

1

發表您的數據如下方式,

data: $("#addNewContactPersonForm").serialize() + '&contractorId='+ contractorId 

並添加數據類型爲Ajax調用,

dataType: "json" 
+0

是的!這樣可行!你能解釋我的解決方案和你的解決方案之間的區別嗎? – 2015-01-09 22:33:05

+0

如果你想以你的方式發佈數據,那麼你必須創建'ContactPerson'的客戶端對象,然後將其分配給newContactPerson。因爲序列化正在爲您的表單創建'first name = Foo&last name = Bar'。所以MVC模型綁定器在提取數據時存在問題。 – Glk 2015-01-09 22:47:06

+0

我認爲asp.net負責該序列化 – 2015-01-09 23:00:09

相關問題