gpt4 book ai didi

c# - EditorTemplate 未按预期呈现?

转载 作者:行者123 更新时间:2023-11-30 16:58:34 24 4
gpt4 key购买 nike

我需要能够动态地向我正在处理的 MVC 5 应用程序中的 Tabel 添加/删除行。我还在我的项目中包含了 knockout,因为我用它来回发到我的 viewModel 上的预成型计算。

到目前为止我所做的是在我的用户模型上创建一个列表来保存 AdditionalUsers 的详细信息:

public List<AdditionalUser> AdditionalUsers { get; set; }

附加用户类定义为:

public class AdditionalUser
{
public string FirstName { get; set; }
public string Surname { get; set; }
public double Cost { get; set; }
}

然后我创建了一个 EditorTemplates 文件夹并创建了一个局部 View _AdditionalUser.cshtml,如下所示:

@model MyProject.Models.AdditionalUser

<td>
@Html.TextBoxFor(model => model.FirstName)
</td>
<td>
@Html.TextBoxFor(model => model.Surname)
</td>
<td>
@Html.TextBoxFor(model => model.Cost)
</td>

我需要在我的用户 View 上呈现的地方,我已经完成了以下操作:

        <tr>
@Html.EditorFor(model => model.AdditionalUsers)
</tr>

彼此对 View 有3个。然后在我的 Controller 中执行此操作,我在那里新建了我的用户模型:

model.AdditionalUsers =  new List<AdditionalUser>(2);

我原以为会在我调用 EditorFor 的 tr 中创建两个空白行,但没有呈现任何内容?这只是为了让 EditorTemplate 正常工作而进行的第一次测试。然后我想将其连接到动态添加和删除行的敲除,但首先我想知道为什么 EditorTemplate 没有按预期呈现?

最佳答案

您的编辑器模板命名不正确。 MVC 有两种方式来获取它:

按名字

使用与数据类型完全相同的名称命名模板:

DateTime.cshtml
String.cshtml
AdditionalUser.cshtml

明确地

在模型的属性中,使用 UIHint 属性:

public class MyModel
{
public SomeObject TheObject { get; set; }

[UIHint("SomeObject")]
public SomeObject AnotherObject { get; set; }

}

此外,您的代码对于呈现行不是很正确。您应该首先将 tr 标记添加到 View 中:

@model MyProject.Models.AdditionalUser

<tr>
<td>
@Html.TextBoxFor(model => model.FirstName)
</td>
<td>
@Html.TextBoxFor(model => model.Surname)
</td>
<td>
@Html.TextBoxFor(model => model.Cost)
</td>
</tr>

接下来将您的父 View 更改为如下所示(请注意,为清楚起见,我添加了表格标题行):

<table>
<tr>
<th>@Html.DisplayNameFor(m => m.FirstName)</th>
<th>@Html.DisplayNameFor(m => m.Surname)</th>
<th>@Html.DisplayNameFor(m => m.Cost)</th>
</tr>
@Html.EditorFor(model => model.AdditionalUsers)
</table>

关于c# - EditorTemplate 未按预期呈现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25164869/

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