相关疑难解决方法(0)

可以在编辑器模板中调用显示模板吗?

我已经在~/Views/Shared/DisplayTemplatesnamed中创建了一个显示模板ImpactMatrix.cshtml.它接受一个可为空的int并呈现一个二维矩阵,其中突出显示所选的数字:

@model int?

@{
    var matrix = ImpactMatrix.GetMatrix();
}   

<div class="impactmatrix">
  <table>
    @for (int i = 0; i < matrix.GetLength(0); i++)
    { 
        <tr>
          @for (int j = 0; j < matrix.GetLength(1); j++)
          {
              var cell = matrix[i, j];
              <td data-color="@cell.Color" 
                class="matrix @(Model == cell.Value ? cell.Color.ToString() : "")">
                    @cell.Value
              </td>
          }
        </tr>
    }
    </table>
</div>
Run Code Online (Sandbox Code Playgroud)

它很容易重复使用,效果很好.我可以在我的视图中调用它,如下所示:

@Html.DisplayFor(m=> m.ImpactFactor, "ImpactMatrix")
Run Code Online (Sandbox Code Playgroud)

现在我决定扩展它并使其成为编辑器.我们的想法是为所选数字添加隐藏输入,并使用div将输入与矩阵模板一起包装.从那里开始使用Javascript与我的显示网格交互并填充隐藏的输入应该是一件简单的事情.

ImpactMatrix.cshtml在我的~/Views/Shared/EditorTemplates文件夹中创建了一个名为的编辑器模板.这是代码:

@model int?

<div class="impactmatrix-editor">
    @Html.HiddenFor(m => m)
    @Html.DisplayFor(m => m, "ImpactMatrix") …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc asp.net-mvc-3

10
推荐指数
1
解决办法
1101
查看次数

是否可以在EditorFor模板控件中使用DisplayFor()

EditorFor()在我的视图中使用帮助器来渲染编辑模板,我想调用DisplayFor()内部的这个模板来渲染显示模板.

像这样

这是在/Shared/EditorTemplates/Client.ascx中

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %>
<%: Html.DisplayFor(client=>client) %>
Run Code Online (Sandbox Code Playgroud)

在DisplayFor模板中,我渲染出客户端的属性.DisplayFor模板在从其他地方调用时工作得很好,但是从EditorFor模板调用它不会渲染任何东西.似乎DisplayFor()调用从未真正进入DisplayFor模板.

asp.net-mvc-2

6
推荐指数
1
解决办法
2088
查看次数

标签 统计

asp.net-mvc ×1

asp.net-mvc-2 ×1

asp.net-mvc-3 ×1

c# ×1