c# - EditorTemplate 未按预期呈现?

标签 c# asp.net-mvc razor asp.net-mvc-5 mvc-editor-templates

我需要能够动态地向我正在处理的 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/

相关文章:

javascript - 将模型项 id 从 Html.ActionLink 传递给 jquery 函数

asp.net-mvc - 将模型绑定(bind)到单选按钮

c# - 避免在 Action 中渲染 View 的正确方法

asp.net-mvc - 如何将 HTML 内容传递给 MVC-Razor 中的部分 View ,如 "for" block

c# - 播放 VS2005 中的程序是否会导致程序的工作方式与 .exe 文件不同?

c# - 在 C# 中尽早终止 Roslyn 脚本

c# - 给定一个字符串中的网站 HTML,如何提取标签元素?

c# - Autofac.Web : Impact of having *both* PropertyInjection and AttributedInjection configured

asp.net-mvc - 在 ASP.NET MVC Controller 中注入(inject)依赖项的不同方法?

c# - 如何使用 Razor 语法有条件地输出 HTML?