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
}
结果:
我有模特。
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
}
结果: