Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将嵌套类列表从视图绑定到控制器_C#_Asp.net Mvc_Model View Controller - Fatal编程技术网

C# 将嵌套类列表从视图绑定到控制器

C# 将嵌套类列表从视图绑定到控制器,c#,asp.net-mvc,model-view-controller,C#,Asp.net Mvc,Model View Controller,我需要将嵌套类中的列表绑定到ActionMethod 现在,在调用ActionMethod时(请看下面),ActionItemList为null 不幸的是,我无法将列表移动到主模型中 这是我的主要模型: public class StateViewModel { public EmergencyOperationActionListModel ActionListModel { get; set; } public EmergencyInfoModel InfoModel

我需要将嵌套类中的列表绑定到ActionMethod

现在,在调用ActionMethod时(请看下面),ActionItemList为null

不幸的是,我无法将列表移动到主模型中

这是我的主要模型:

public class StateViewModel
{
    public EmergencyOperationActionListModel ActionListModel { get; set; }
    public EmergencyInfoModel InfoModel
    public EmergencyInfoCauseListModel CauseListModel { get; set; }
}
和嵌套的一个:

public class EmergencyInterventiActionListModel
{
    public string Firefighters { get; set; }
    public string ExternalAssistance { get; set; }
    public string PlacesDescription { get; set; }
    public List<ActionItemModel> ActionItemList { get; set; }
}
公共类紧急干预列表模型
{
公共字符串{get;set;}
公共字符串外部协助{get;set;}
公共字符串位置描述{get;set;}
公共列表ActionItemList{get;set;}
}
观点:

        @model Emergencies.Models.StatoViewModel


        //...code code code

        @using (Html.BeginForm("EditOps", "Operations")
        {

            <table class="table table-responsive table-hover" style="margin-bottom: 0px;">
                <thead class="headOperations">
                    <tr>
                        <td>
                            CompanyName
                        </td>
                        <td>
                            Workers
                        </td>
                        <td>
                            Due Date
                        </td>
                        <td>
                           Start Date
                        </td>
                        <td>
                            End Date
                        </td>
                        <td>
                           Action
                        </td>
                    </tr>
                </thead>
                @if (Model.ActionListModel != null)
                {
                    for (int i = 0; i < Model.ActionListModel.ActionItemList.Count(); i++)
                    {
                        <tr>
                            <td>
                                @Html.HiddenFor(m=>m.ActionListModel.ActionItemList[i].Id)

                                @Html.EditorFor(m => m.ActionListModel.ActionItemList[i].CompanyName, new { htmlAttributes = new { id = "companyEdit_" + Model.ActionListModel.ActionItemList[i].Id, @class = "editBoxForInterventi" } })
                            </td>
                            <td>
                                @Html.EditorFor(m => m.ActionListModel.ActionItemList[i].NumberOfWorkers, new { htmlAttributes = new { id = "workersEdit_" + Model.ActionListModel.ActionItemList[i].Id, style = "width:40px", @class = "editBoxForInterventi" } })
                            </td>
                            <td>
                                <div class="input-group date" id="duedateCalendar_@Model.ActionListModel.ActionItemList[i].Id">
                                    @Html.EditorFor(m => m.ActionListModel.ActionItemList[i].DueDate, new { htmlAttributes = new { onclick = "CalendarDue('" + Model.ActionListModel.ActionItemList[i].Id + "')", id = "duedateEdit_" + Model.ActionListModel.ActionItemList[i].Id, @class = "editBoxForInterventi form-control dueDateCalendar", @readonly = "readonly" } })
                                </div>
                            </td>
                            <td>
                                <div class="input-group date" id="starttimeCalendar_@Model.ActionListModel.ActionItemList[i].Id">
                                    @Html.EditorFor(m => m.ActionListModel.ActionItemList[i].StartTime, new { htmlAttributes = new { id = "starttimeEdit_" + Model.ActionListModel.ActionItemList[i].Id, @class = "editBoxForInterventi  form-control starttimeCalendar", @readonly = "readonly" } })
                                </div>
                            </td>
                            <td>
                                <div class="input-group date" id="endtimeCalendar_@Model.ActionListModel.ActionItemList[i].Id">
                                    @Html.EditorFor(m => m.ActionListModel.ActionItemList[i].EndTime, new { htmlAttributes = new { id = "endtimeEdit_" + Model.ActionListModel.ActionItemList[i].Id, @class = "editBoxForInterventi  form-control endtimeCalendar", @readonly = "readonly" } })
                                </div>
                            </td>
                            <td></td>
                        </tr>
                    }
                }
            </table>
            <button type="submit" class="submit-with-icon btn btn-flussi-add" name="doButton" value="save">
                <span class="glyphicon glyphicon-pencil"></span>
            </button>
        }

        //code code code...
@model.Models.StatoViewModel
//…代码
@使用(Html.BeginForm(“EditOps”,“Operations”)
{
公司名称
工人
到期日
开始日期
结束日期
行动
@if(Model.ActionListModel!=null)
{
对于(int i=0;im.ActionListModel.ActionItemList[i].Id)
@EditorFor(m=>m.ActionListModel.ActionItemList[i].CompanyName,new{htmlAttributes=new{id=“companyEdit”+Model.ActionListModel.ActionItemList[i].id,@class=“EditBoxForInterventii”})
@EditorFor(m=>m.ActionListModel.ActionItemList[i].NumberOfWorkers,new{htmlAttributes=new{id=“workersEdit”+Model.ActionListModel.ActionItemList[i].id,style=“width:40px”,@class=“editBoxForInterventi”})
@Html.EditorFor(m=>m.ActionListModel.ActionItemList[i].DueDate,new{HtmlatAttributes=new{onclick=“CalendarDue(”+Model.ActionListModel.ActionItemList[i].Id+”,Id=“duedateEdit”+Model.ActionListModel.ActionItemList[i].Id”,@class=“EditBoxForInterferti form control dueDateCalendar”(@readonly=“readonly”})
@EditorFor(m=>m.ActionListModel.ActionItemList[i].StartTime,new{HtmlatAttributes=new{id=“starttimeEdit”+Model.ActionListModel.ActionItemList[i].id,@class=“EditBoxForInterferti表单控件starttimeCalendar”,@readonly=“readonly”})
@EditorFor(m=>m.ActionListModel.ActionItemList[i].EndTime,新的{htmlAttributes=new{id=“endtimeEdit”+Model.ActionListModel.ActionItemList[i].id,@class=“EditBoxForInterferti表单控件endtimeCalendar”,@readonly=“readonly”})
}
}
}
//代码代码。。。
最后,控制器:

  public ActionResult EditOps( List<ActionItemModel> ActionItemList )
{
    //code
}
公共ActionResult编辑操作(列表ActionItemList) { //代码 }
只需更改EditOps方法签名即可获得以下内容

public ActionResult EditOps(StateViewModel modelPosted)
{
    //access modelPosted here.
}

整个模型按照视图中的@model指令进行序列化。

表单应绑定到模型本身。在EditOps中将类型更改为StateViewModel。忘记提及:我有(并使用)StateViewModel中的其他属性,因此我无法更改它。我不是指更改模型…更改EditOps方法的签名!您的视图根据页面顶部的@model指令绑定到模型。这是表单数据在发布时将序列化为的内容!即EditOps(StateViewModel modelPosted)谢谢@Wheels 73。根据您的建议,我将签名从列表ActionItemList更改为EmergencyOperationActionListModel ActionListModel,现在它可以工作了。Ofc名称必须匹配。不客气……我会将其作为您的答案发布。干杯