2015-03-13 97 views
0

以下是我的相關代碼。我想將2個模型傳遞給POST方法。MVC C# - AJAX將2個模型傳遞給控制器​​

如何將2個模型傳遞給控制器​​?

var mod1 = [], mod2 = []; 
mod1.push({ 
    Server: Server, 
    Name: Name     
}); 

mod2.push({ 
    POP: POPServer, 
    .... 
}); 

Settings = JSON.stringify({ 'Settings ': mod1 }); 

jq.ajax({ 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    type: 'POST', 
    url: '/Site/insertSettings', 
    data: Settings , 
    success: function() { 
     .... 
    } 
}); 

控制器

[HttpPost] 
public JsonResult insertSettings(Settings mod1, OtherSettings mod2) 
{ 
    .... 
} 
+1

var data = JSON.stringify({'mod1':mod1,'mod2':mod2});'? – DLeh 2015-03-13 12:22:24

+0

真的很想知道是否可以使用MVC,因爲Web-API不允許這樣做。 http://stackoverflow.com/a/14407502/1505865 – 2015-03-13 12:22:46

+1

我不認爲它適用於多個複雜的對象,雖然也許是一個自定義聯編程序?簡單的方法是用你的兩個對象創建一個新對象 – Ewan 2015-03-13 12:34:52

回答

2

我對這種情況的方法就是創建一個包含兩個模型的模型。這將是這樣的:

public class InsertSettingsViewModel() 
{ 
    public Settings settings { get; set; } 
    public OtherSettings otherSettings { get; set; } 
} 

所以您的控制器將要接收的參數的大對象:

[HttpPost] 
public JsonResult insertSettings(InsertSettingsViewModel model) 
{ 
    //Here you manipulate your objects 
} 

而且你的JS的行動是要提供對象

var bigMod = []; 
var mod1 = [], 
var mod2 = []; 
mod1.push({ 
    Server: Server, 
    Name: Name     
}); 

mod2.push({ 
    POP: POPServer, 
    .... 
}); 
bigMod.push({ 
    settings: mod1, 
    otherSettings : mod2 
}) 

Settings = JSON.stringify({ 'model': bigMod }); 

這種方式是一個更清潔的代碼,我真的不認爲你可以傳遞一個控制器的各種對象。希望能幫助到你。

相關問題