我正在尝试将一个 JSON 对象(一个 JSON 化的淘汰模型,如果有任何相关性)发布到我的 MVC 控制器,并让控制器返回一个新视图。为此,我使用表单发送数据。问题是我希望在控制器收到 JSON 时自动将其转换为模型。
如果我为此使用 AJAX 调用,
var actionModel = new Object();
actionModel.Controls = ko.toJS(self.controls());
var json = JSON.stringify(actionModel);
$.ajax({
url: "MyController/Preview",
type: "POST",
contentType: 'application/json; charset=utf-8',
cache: false,
data: json,
success: function (data) {
}
});
... JSON 对象已成功反序列化并转换为我的模型类的实例。
public ActionResult Preview(ActionModel actionModel) { ... }
public class ActionModel
{
public List<ControlModel> Controls { get; set; }
}
如果我想使用表单执行此操作,我知道我需要将 JSON 插入隐藏的输入字段,但这样做时我能做到的最好的方法是将数据作为序列化字符串接收:
@using (Html.BeginForm("Preview", "MyController", FormMethod.Post, new { id = "previewForm" }))
{
<input type="hidden" id="hiddenFieldName" />
}
public ActionResult Preview(string hiddenFieldName) { ... }
之后我可以反序列化它,但如果 MVC 可以为我转换它,我真的更喜欢它,就像使用 AJAX 调用一样。这可能吗?
谢谢。