我有一个MVC模型,它将具有2个列表以及一些其他属性。列表1是一个复选框列表。列表2是开始时间和结束时间的列表。我已经设置并工作了,但是现在我需要能够将更多数据放入使用Jquery实现但添加了javascript的列表2中。这不会将其添加到模型数据中。然后,我需要将这两个列表都发布到控制器操作中,以便可以循环它们并将它们发布到数据库中(而不是我的问题)。我需要填写要发送的模型。我不确定如何获取该信息,并且在使用jquery / js填充第二个模型时还是空白。
我可以很容易地在单个条目中执行此操作,但是我希望能够一次提交多个。
我尝试创建仅包含呈现的模型列表数据的局部视图,但随后在填充模型时也遇到了同样的问题。我已经尝试过通过MVC进行操作,但是我并没有保存,我希望客户能够进行一些更改然后保存。因此,必须将其保存在DOM上,而我为此使用了一个表。我希望该表成为模型数据。
模型
public List<PersonelList _ViewModel> PersonelList { get; set; }
public List<OutTimesForList_ViewModel> OutTimesList { get; set; }
public DateTime? StartDateTime { get; set; }
public DateTime? EndDateTime { get; set; }
由于我正在使用的JS日期时间选择器,因此它们可以为null(日期时间),如果我不将其发送为null的话,它们已经在文本框中显示了一个时间。
在视图中,他们将输入开始时间和结束时间,然后点击添加,然后我希望将其添加到OutTimesList中,以便该帖子可以将模型列表中的数据提供给我。 personelList是要添加时间的CB列表,因此如果选中,则添加这些时间。
完成发布后,两个列表都将发送给控制器,以供我遍历和提交数据。
答案 0 :(得分:0)
尝试将formData与jQuery ajax一起使用。有了对象集合,它应该看起来像这样:
$( "#YourFormId" ).submit(function(event) {
var formData = new FormData($("#YourFormId"))
//todo need to get properties of PersonelList and OutTimesList via jquery
var indexPersonelList = 0;
for(var pair of PersonelList){
var item = pair[key];
formData.append("PersonelList[" + indexPersonelList + "].Id", item.Id);
indexPersonelList++;
}
var indexOutTimesList = 0;
for(var pair of OutTimesList){
var item = pair[key];
formData.append("OutTimesList[" + indexOutTimesList + "].Id", item.Id);
indexOutTimesList++;
}
$.ajax({
type: 'POST',
url: '/MyController/MyAction',
data: formData,
contentType: false,
processData: false,
success: function (data) {
//some success stuff
},
error: function (error) {
//some error stuff
}
});
});