【问题标题】:MVC C# - AJAX Passing 2 Models to ControllerMVC C# - AJAX 将 2 个模型传递给控制器
【发布时间】:2015-03-13 12:15:18
【问题描述】:

以下是我的相关代码。我想将 2 个模型传递给 POST 方法。

如何将 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)
{
    ....
}

【问题讨论】:

  • var data = JSON.stringify({'mod1' : mod1, 'mod2': mod2}); ?
  • 真的很想知道 MVC 是否可行,因为 Web-API 不允许这样做。 stackoverflow.com/a/14407502/1505865
  • 我认为它不适用于多个复杂对象,尽管可能是自定义活页夹?最简单的方法就是用你的两个对象创建一个新对象
  • 虽然,我可能误解了这个问题。你的意思是通过 mod1 还是 mod2
  • 我都想通过..!

标签: c# jquery asp.net-mvc


【解决方案1】:

在这种情况下,我的方法只是创建一个包含两个模型的模型。它会是这样的:

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 });

这种方式代码更简洁,我真的不认为你可以向控制器传递各种对象。希望能帮助到你。

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    • 2020-01-09
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    相关资源
    最近更新 更多