2015-07-04 39 views
0

我們遇到這樣的情況,我們想控制器到達第一個參數爲JSON(模型)作爲第二個參數模型比其他一些額外的數據串(例如標誌,從何處驅動事件的源代碼控制等),我們嘗試使用jQuery進行調整,但所有結果都顯示在瀏覽器檢查元素中。Asp.net MVC:控制器,第一個參數爲JSON和第二個參數從查看

通常我們有我們的控制器是這樣的:

public async Task<ActionResult> Foo(Bar b, string additionaldata) 
{ 
    if (additionaldata="Deleted") 
    { 

    } 
    else if (additionaldata="Favorite") 
    { 

    } 
} 

而且裏面查看它是這樣的:

$("#delete").click(function() { 
        $.ajax({ 
         url: "/Index/Foo", 
         type: "POST", 
         data: $("#myform").serialize(), 
         dataType: "json" 
        }).done(function (model) { 
         $("#Foo_Id").val(model.Foo.Id); 
        }); 
       }); 

至於模型而言,這個jQuery是工作正常,但遠當我們嘗試添加一些額外的參數時,我們無能爲力。

請建議我們如何通過它。

回答

2

在選擇是使用FormData建立模型,並添加額外的數據

var formdata = new FormData($('#myform').get(0)); // serialize the form 
formdata.append('additionaldata', 'Favorite'); // add additional properties 
$.ajax({ 
    url: '@Url.Action("Index", "Foo")', 
    type: 'POST', 
    data: formdata, 
    processData: false, 
    contentType: false,   
}); 
+0

它的工作就像一個魅力,只是想知道它是如何成爲我們增加了在JSON選項第二個參數。我們認爲它會在模型​​本身中添加一些字符串。 – jaykhatri

+0

不太確定你的問題。 append()方法只是爲要發佈的數據添加名稱/值對,在這種情況下爲additionaldata ='Favorite''。因爲你有一個匹配的參數('string additionaldata'),它將被綁定。你也可以用你的原始代碼手工做,但是'data:$(「#myform」)。serialize()+'&additionaldata = Favorite','但它可能會有點混亂。 –

+0

這正是我所問的,這意味着它是控制器操作的能力,它智能地從json字符串中提取參數? – jaykhatri

相關問題