【发布时间】:2016-04-29 02:26:00
【问题描述】:
我创建了一个链接<a href="#" id="ajaxPost">send model as json</a>,它将这个 json 发送到我的控制器:
{
"textFields":[
{
"name":"text",
"xPath":"/test/text"
},
{
"name":"text2",
"xPath":"/test/text2"
}
]
}
public PartialViewResult addTextField(List<AddTextFieldModel> textFields) {
return PartialView("_AddTextField", new AddTextFieldModel("hallo", "123"));
}
通过 jQuery ajax。
$(document).ready(function () {
var textFields = [
{ name: "text", xPath: '/test/text' },
{ name: "text2", xPath: '/test/text2' }
];
//textFields = JSON.stringify({ 'textFields': textFields });
$("#ajaxPost").on("click", function (e) {
e.preventDefault();
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'html',
type: 'POST',
url: '@Url.Action("addTextField")',
data: '{ "textFields":' + JSON.stringify(textFields) + '}',
success: function (data) {
$('#mainDiv').html(data);
},
failure: function (response) {
alert(response);
$('#mainDiv').html(response);
}
});
});
});
我遇到的问题; .net mvc 4.5.2 不会将 json 对象映射到我的模型列表:
public class AddTextFieldModel {
public String Name { get; set; }
public String XPath { get; set; }
public AddTextFieldModel(string name, string xPath) {
Name = name;
XPath = xPath;
}
}
除了如何用@Ajax.ActionLink("Add", "addTextField", ???, new AjaxOptions { HttpMethod = "Post", InsertionMode = InsertionMode.Replace, UpdateTargetId = "mainDiv" })
替换jQuery ajax调用?
【问题讨论】:
-
AFAIK 你必须在模型类中有一个无参数的构造函数才能使模型绑定工作
-
您尝试将模型从视图绑定到控制器输入。不是 MapJson 来建模....如果你想这样做,那么你需要编写自己的模块来为你处理这个。(真的不认为这是你想要做的)
-
google“mvc 视图到模型绑定”...我相信你会来对的。它是如何从表单中序列化数据的...POST/GET...您可以使用ajax进行模拟,因此这些值绑定在控制器中。
-
我用谷歌搜索并找到了一些links,但我看不出我的方法有什么不同。
-
@shakib,谢谢我认为默认构造函数无论如何都在那里。现在它的工作。
标签: jquery asp.net json asp.net-mvc-4