asp.net-mvc - 将 CSS 类应用于 Html.DisplayFor (ASP.NET MVC)

标签 asp.net-mvc html razor

我是 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.cshtmlDisplayFor 实际上永远不会使用它。对于 DisplayFor,您需要在 Views\Shared\DisplayTemplates 中有一个单独的模板。顾名思义,EditorTemplatesEditorFor 使用。

无论是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/

相关文章:

asp.net-mvc - 有没有办法将可选参数发送到 Action ?

asp.net-mvc - 在 MVC 布局菜单上显示和更新购物车计数

html - 如何使用 vh div 缩放图像高度

html - 如何使用 css 在悬停工具提示上显示使用省略号缩短的相同文本?

c# - 无法隐式转换类型 'System.Linq.IQueryable<AnonymousType#1>'

asp.net-mvc - 尝试使用 ASP.NET MVC 上传文件

javascript - 后端驱动网站的 javascript 单元测试

vb.net - 我可以在 @Using.BegingForm() 中渲染 @Section 吗?

asp.net-mvc-3 - ASP.NET MVC3 中的 HtmlHelper 使用 Action<T> 作为模板 : Razor syntax?

c# - 使用 <text> 标签的 MVC .Net 4 Razor 问题