gpt4 book ai didi

c# - 二维数组的 ASP.NET MVC 5 编辑器

转载 作者:行者123 更新时间:2023-11-30 21:38:05 25 4
gpt4 key购买 nike

我有一个包含二维数组的模型:

public class Matrix
{
public ValidInt[][] Data;
[Range(0, 8, ErrorMessage = "Введите ширину картины")]
public int Width { get; set; }
[Range(0, 8, ErrorMessage = "Введите ширину картины")]
public int Height { get; set; }

public Matrix(int w, int h)
{
Width = w;
Height = h;
Data = new ValidInt[w][];
for (int i = 0; i < w; i++)
this.Data[i] = new ValidInt[h];
}

public class ValidInt
{
[Range(0, 8, ErrorMessage = "Введите число, соответствующее цвету")]
public int Value { get; set; }
public ValidInt()
{
Value = 0;
}
}
}

然后我想让 HTML.EditorFor 在每个 block 中填充数据,所以我写了这样的东西:

       <table>
@for (int column = 0; column < Model.Data.GetLength(1); column++)
{
<tr>
@for (int row = 0; row < Model.Data.GetLength(0); row++)
{
<td>@Html.EditorFor(x => Model.Data[column, row].Value); </td>
}
</tr>
}
</table>

但事实证明,二维数组不能使用 EditorFor。关于如何绕过它的任何想法?

最佳答案

您不能使用二维数组。但是,您可以使用 Jagged Array .

仅供引用:为了让 ModelBinder 将值绑定(bind)到模型,它必须有一个无参数的构造函数。

型号

public class Matrix
{
public int[][] Data { get; set; }
}

查看

@using (Html.BeginForm())
{
<table>
@for (int column = 0; column < Model.Data.Length; column++)
{
<tr>
@for (int row = 0; row < Model.Data[column].Length; row++)
{
<td>@Html.EditorFor(x => Model.Data[column][row])</td>
}
</tr>
}
</table>
<button type="submit">Submit</button>
}

Controller

public IActionResult Index()
{
int w = 3, h = 2;
var matrix = new Matrix();
matrix.Data = new int[w][];
for (int i = 0; i < w; i++)
matrix.Data[i] = new int[h];

return View(matrix);
}

[HttpPost]
public IActionResult Index(Matrix matrix)
{
return View(matrix);
}

结果

enter image description here

enter image description here

关于c# - 二维数组的 ASP.NET MVC 5 编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46409152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com