Razor 视图未绑定到需要包含列表列表的模型的控制器

Razor view is not binding to controller expecting a model containing list of lists

我有模特。

public class ViewInput
{
        public List<List<String>> cells;
        //Other stuff
}

此模型数据被传递到 Razor 生成的 HTML 视图。请注意,当将模型传递给视图时,会将经过测试和确认的非零大小的二维列表传递给视图。

@model MvcMovie.Models.ViewInput

@*Stuff*@

@using (Html.BeginForm("GenerateDecisionTree", "Home", FormMethod.Post))
{
    <p>
            <table id="mainTable">

                @for (var i = 0; i < Model.cells.Count(); i++)
                {
                    <tr>
                        @for (var j = 0; j < Model.cells[i].Count(); j++)
                        {
                            <td>
                                @Html.TextBoxFor(m => m.cells[i][j])
                            </td>
                        }
                    </tr>
                }
            </table>
        </p>
    <div>
        <br><input type="submit" name="submit" class="btn btn-danger" value="Generate Decision Tree" />
    </div>
}

之后 post 由控制器处理

    [HttpPost]
    public String GenerateDecisionTree(ViewInput vi)
    {
        var test = vi.cells[0][0];//EXCEPTION - THE 2D LIST IS
        return "Hi There";
    }

运行 此代码导致控制器代码的第一行出现异常,因为列表列表(称为“cell”)由于某种原因为空。它不应该为空,因为我们正在 post 在非零二维列表上输入数据。

我很清楚这一点post and this link,但他们似乎没有回答我的问题。

谁能帮我解决这个问题

您需要将 get;set; 添加到单元格:

public class ViewInput
{
        public List<List<string>> cells { get; set; }
        //Other stuff
}

结果: