是MVC的新手,我正在尝试将CSS样式应用于我的模板文件中的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;}
答案 0 :(得分:4)
Html.DisplayFor
不支持传递HTML属性,包括类/样式。在它最基本的地方它只是渲染价值,没有任何HTML,并且使用编辑/显示模板,它只是呈现模板中的任何内容。
首先,如果你有EditorTemplates\Contacts.cshtml
,DisplayFor
实际上永远不会使用DisplayFor
。对于Views\Shared\DisplayTemplates
,您需要EditorTemplates
中的单独模板。顾名思义EditorFor
使用了DisplayFor
。
EditorFor
或Html.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>