0

我不相信标题写得很好,所以请随意批评。:)

我有一个控制器,它返回一个页面,用户可以在该页面上单击一些选项来创建项目列表(使用 JS 在客户端上动态构建)。当用户满意时,他们可以单击一个按钮,然后...

...目前,一些 DIV 被隐藏/显示,将(相同)页面转换为选择的只读查看器。

...最好是另一个ActionResult应该调用

我的问题是我无法决定将数据从一个页面传输到另一个页面的好方法:查询字符串是一个选项,存储/检索到/从数据库是另一个选项。我对这些都不满意。

使用同一控制器将数据传输到新视图的流畅且推荐的方法是什么?

4

1 回答 1

2
$.ajax({
    url: '@(Url.Action("Action", "Controller"))',
    type: 'post',
    data: {
        id: id,
        data1: data1
    },
    success: function (result) {
        if (result.Success) {
        }
});

一种非常简单的方法就像上面一样,您可以根据需要定义任意数量的字段,只要输入参数匹配,它们就会在控制器上接收

public ActionResult Action(string id, string data1){...

如果您想变得更复杂,您可以使用 json 数据构建列表和数组,然后将其字符串化通常是一个好主意。

var data = {};
data.id = 'id';
data.list = [];
data.list.push({ name: 'name', location: 'location', etc })

然后在ajax调用中

data: Json.stringify(data),

同样,只要名称匹配,控制器就会收到它。希望这可以帮助

编辑: Json.stringify 是一个用于发送数据的工具。我不知道它的所有细节,但建议用于更复杂的数据。此处的示例用于将模型发送回控制器,但您提到不想创建模型。我相信要在控制器端接收这些数据,您需要输入与 data.xml 中定义的参数匹配的参数。从我上面的列表来看,这是一个复杂的类型,所以你的控制器会是这样的。

Public ActionResult Action(string id, List<ComplexType> list){...
于 2013-11-13T15:33:01.073 回答