gpt4 book ai didi

c# - 带模板的 Asp.Net MVC EditorFor Array

转载 作者:行者123 更新时间:2023-12-05 09:20:21 27 4
gpt4 key购买 nike

我有一个 ClassA 模型,它有一个属性是 ClassB 数组。

public class ClassA
{
public string ClassAProperty1 { get; set; }
public string ClassAProperty2 { get; set; }
public ClassB[] MySubCollection { get; set; }
}

public class ClassB
{
public string Prop1 { get; set; }
public string Prop2 { get; set; }
}

我想在表格中编辑我的 ClassB 实例。我已经为创建表格行的 ClassB 创建了一个 EditorTemplate。

    @model ClassB
<tr>
<td>@Html.TextBoxFor(m => m.Prop1)</td>
<td>@Html.TextBoxFor(m => m.Prop2)</td>
</tr>

这在 ClassA 的编辑 View 上非常有效,因为 MVC 自己完成了所有字段索引魔法:

@Html.TextBoxFor(m => m.ClassAProperty1)
@Html.TextBoxFor(m => m.ClassAProperty2)

<table>
<tr>
<th>Col</th>
<th>Col</th>
</tr>
@Html.EditorFor(m => m.MySubCollection)
</table>

但是,我实际上想为包含 table 标签的数组创建一个编辑器模板,如下所示:

@model ClassB[]
<table>
<tr>
<th>Col</th>
<th>Col</th>
</tr>
@foreach(var item in Model)
{
@Html.EditorFor(m => item)
}
</table>

所以我可以简单地做:

@Html.TextBoxFor(m => m.ClassAProperty1)
@Html.TextBoxFor(m => m.ClassAProperty2)
@Html.EditorFor(m => m.MySubCollection)

但是,字段索引不适用于此方法。有没有一种方法可以在不必自己构建文本框名称的情况下完成此操作?作为模板,使用时并不知道属性名。

最佳答案

我想通了。 Razor 很聪明。使用 for 循环而不是 foreach 解决了这个问题:

@for (var i = 0; i < Model.Length; i++)
{
@Html.EditorFor(c => Model[i])
}

关于c# - 带模板的 Asp.Net MVC EditorFor Array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37596685/

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