我是 MVC 的新手,我正在尝试将 CSS 样式应用到我的模板文件中的 Html.DisplayFor 助手:Shared>>EditorTemplate>>Contacts.cshtml。下面是我的代码:
@model People.Contacts
<div>
@Html.DisplayNameFor(m => m.Name) <span class="myclass">@Html.DisplayFor(m => m.FirstName) @Html.DisplayFor(m => m.LastName)</span></div>
我在这个模板之外的 css 类如下所示:
.myclass{font:italic bold;}
最佳答案
Html.DisplayFor
不支持传递 HTML 属性,包括类/样式。在最基本的情况下,它只呈现值,没有任何 HTML,并且使用编辑器/显示模板,它只呈现模板中的任何内容。
首先,如果您有 EditorTemplates\Contacts.cshtml
,DisplayFor
实际上永远不会使用它。对于 DisplayFor
,您需要在 Views\Shared\DisplayTemplates
中有一个单独的模板。顾名思义,EditorTemplates
由 EditorFor
使用。
无论是DisplayFor
还是EditorFor
,基本上都是调用Html.Partial
。只有一些额外的逻辑来处理特定的模型属性,并默认在 DisplayTemplates
/EditorTemplates
中查找 View 。也就是说,您可以通过 ViewData
向它们传递额外的数据,就像传递部分数据一样。
例如,如果您要调用 @Html.DisplayFor(m => m.FirstName, new { @class = "myclass"})
,那么默认情况下什么都不会发生,但是您ViewData["class"]
中的值为 "myclass"
。然后您可以使用它来修改模板的一部分。例如:
Views\Shared\DisplayTemplates\Contacts.cshtml
<span @(ViewData["class"] != null ? "class='" + ViewData["class"] + "'" : string.Empty)>
@ViewData.TemplateInfo.FormattedModelValue
</span>
检查 ViewData["class"]
是否有值,如果有,则将具有该值的类属性添加到范围中。
关于asp.net-mvc - 将 CSS 类应用于 Html.DisplayFor (ASP.NET MVC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25790853/