在视图中有2个模型列表的模型保存和操作

时间:2019-04-12 14:52:45

标签: c# jquery model-view-controller

我有一个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列表,因此如果选中,则添加这些时间。

完成发布后,两个列表都将发送给控制器,以供我遍历和提交数据。

1 个答案:

答案 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
       }
      }); 
});