【发布时间】:2016-02-17 06:06:38
【问题描述】:
我的视图中有一个表单,最初只有一个 textarea 输入,如果用户想要使用 jquery,可以添加更多 textarea 输入。我的问题与第二种情况有关。提交表单后,我在控制台中获得了一个对象数组,但是当我将此数组传递给我的控制器中的 mvc 操作时,它将为空。 我已经尝试了这些解决方案,但没有成功:
Send array of Objects to MVC Controller
POST a list of objects to MVC 5 Controller
这是我的代码:-
jquery 代码:
$('body').on('submit', '#addTextForm', function () {
console.log($(this));
var frmData = $(this).serializeArray();
console.log(frmData);
$.ajax({
type: 'post',
url: '/Dashboard/UploadText',
contentType: 'application/json',
data: JSON.stringify({ obj: frmData }),
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
});
return false;
});
MVC 动作:
[HttpPost]
public string UploadText(SliderTextList obj)
{
return "success";
}
我的对象类:
public class SliderText
{
[JsonProperty("Id")]
public int Id { get; set; }
[JsonProperty("SlideName")]
public string SlideName { get; set; }
[JsonProperty("Content")]
public string Content { get; set; }
}
public class SliderTextList
{
public List<SliderText> AllTexts { get; set; }
}
我必须将Content 存储在带有Id 和SlideName 的json 文件中,所以我认为我必须在mvc 操作Uploadtext 中传递一个列表对象,该对象总是为空。请帮忙。
【问题讨论】:
-
在控制台发布标签中检查它正在发送的数据
-
如果您正确生成了视图(即名称或您动态创建的对象具有正确的索引器),那么您只需要
data: $('#addTextForm').serialize()并删除contentType: 'application/json',。 -
@StephenMuecke 它仍然没有工作
-
但是如果您的所有编辑都是
Content属性,那么它们可能都是name="Content",但前提是您将方法签名更改为[HttpPost]public ActionResultUploadText(IEnumerable<string> content),然后构建您的SliderText集合基于数组中的值的对象。
标签: javascript jquery arrays asp.net-mvc asp.net-mvc-4