2015-07-01 52 views
0

我的動作方法曾經有一個參數,我沒有任何問題將模型傳遞給它。帶有多個參數的Ajax調用中的模型綁定

public ActionResult actionMethod([Bind(Exclude = "pro1, pro2")] Class model) 

而Ajax調用:

var formData = $('form').serialize(); 
$.ajax({ 
    url: "@Url.Action("actionMethod", "controller")", 
    method: 'post', 
    data: { header: formData}, 
    success: function (result) { 
     ..... 
    } 
}); 

它能正常工作,直到我有另一個參數添加到方法:

public ActionResult actionMethod([Bind(Exclude = "pro1, pro2")] Class model, string anotherParam = "1") 

而且我這個Ajax調用嘗試:

而且它不工作k,模型始終爲空。我應該如何傳遞這些數據?

+1

在選項將只是'formData + ='&anotherParam = 1'然後'data:formData,'但使用FormData是一個更好的方法。參考[這個答案](http://stackoverflow.com/questions/29293637/how-to-append-whole-set-of-model-to-formdata-and-obtain-it-in-mvc/29293681#29293681)特別是添加額外數據的最後一個代碼片段 –

+0

謝謝Stephen,我還有一個沒有太多相關的問題:我必須將這個模型的元素放在不同的地方,所以它們之間還有其他控件。目前,我只是使用'form'來序列化它們。但我也可能有其他形式,我有更好的選擇嗎? – Akbari

+0

你的意思是你在同一頁面上有多個表單,並且你想序列化併發布它們? –

回答

1

可能不是最好的方法,但下面的方法會使它工作。

像往常一樣傳遞'data'參數ajax中的表單數據,並將額外的參數放在url的query string中。

var formData = $('form').serialize(); 
$.ajax({ 
    url: '@Url.Action("actionMethod", "controller", new { anotherParam = 1})', 
    method: 'post', 
    data: { 
     header: formData 
    }, 
    success: function (result) { 
     ..... 
    } 
});