如何将数组项从UI发送到MVC控制器

时间:2016-11-17 18:33:37

标签: arrays asp.net-mvc knockout.js

我在UI中有一组对象被发送到MVC Controller。对象数组如下所示:

`DoorId`,`DoorName` and an array of `Schedules`. `Schedules` array has `ScheduleId` and `ScheduleName`.

enter image description here

现在如何将其发送到MVC控制器?那么,每个DoorId及其关联的ScheduleId是否可以单独提取以形成另一个对象?

目前,我正在分别发送DoorId数组和ScheduleId数组,

但我不想这样做。我想发送整个数组。

   public async Task<ActionResult> AddGroup(string[] DoorIds, string[] scheduleEntity)//AccessGroupEntity entity, string accountId
    {
        GroupEntity groupEntity = new GroupEntity();


        var doorScheduleList = new List<DoorInfoEntity>();

        for(int i=0;i< DoorIds.Length;i++)
        {
            doorScheduleList.Add(new DoorInfoEntity()
            {
                DoorId = DoorIds[i],
                ScheduleId = scheduleEntity[i]

            });
        }

        accessGroupEntity.DoorItems = doorScheduleList;

然后将其解析为Doors[index].DoorIdDoors[index].ScheduleId以形成'DoorInfoEntity`对象。

怎么做?

我尝试object[] Doors,但它说Object does not contain a definition for DoorId or ScheduleId

1 个答案:

答案 0 :(得分:1)

你需要在C#中使用一个对象图,模型绑定器可以绑定发布的数据,模拟你在JavaScript中拥有的对象图。例如:

public class Door
{
    public Guid DoorId { get; set; }
    public string DoorName { get; set; }
    public List<Schedule> Schedules { get; set; }
    ...
}

public class Schedule
{
    public Guid ScheduleId { get; set; }
    ...
}

然后,您在行动中接受根类作为参数:

public async Task<ActionResult> AddGroup(List<Door> doors)

然后,模型绑定器将从发布的数据中创建服务器端的对象图。