将CSS类应用于Html.DisplayFor(ASP.NET MVC)

时间:2014-09-11 14:59:43

标签: asp.net-mvc html5 razor

是MVC的新手,我正在尝试将CS​​S样式应用于我的模板文件中的Html.DisplayFor帮助:共享>> 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;} 

2 个答案:

答案 0 :(得分:4)

Html.DisplayFor不支持传递HTML属性,包括类/样式。在它最基本的地方它只是渲染价值,没有任何HTML,并且使用编辑/显示模板,它只是呈现模板中的任何内容。

首先,如果你有EditorTemplates\Contacts.cshtmlDisplayFor实际上永远不会使用DisplayFor。对于Views\Shared\DisplayTemplates,您需要EditorTemplates中的单独模板。顾名思义EditorFor使用了DisplayFor

EditorForHtml.Partial基本上与调用DisplayTemplates相同。还有一些额外的逻辑可以处理特定的模型属性,默认情况下会在EditorTemplates / ViewData中查看该视图。也就是说,您可以通过@Html.DisplayFor(m => m.FirstName, new { @class = "myclass" })将部分内容与部分内容相同地传递给他们。

例如,如果您要拨打"myclass",则默认情况下不会发生任何事情,但ViewData["class"]中的值为<span @(ViewData["class"] != null ? "class='" + ViewData["class"] + "'" : string.Empty)> @ViewData.TemplateInfo.FormattedModelValue </span> 。然后,您可以使用它来修改模板的一部分。例如:

<强>视图\共享\ DisplayTemplates \ Contacts.cshtml

ViewData["class"]

检查{{1}}是否有值,如果是,则将具有该值的class属性添加到span。

答案 1 :(得分:1)

作为不同的解决方案,您可以在Html.DisplayFor代码

中使用<Label>
<label class="control-label"> @Html.DisplayNameFor(p => p.HeadLine)</label>