[asp.net-mvc]使用 Html.DisplayFor 内部 razor 视图的应用 css 类

发布时间: 2017/3/25 10:24:58
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

Razor 视图里面我用于模型渲染标签像

 @Html.LabelFor(model => model.MyName, htmlAttributes: new { @class = "control-label col-md-6" })

现在我想使用它的价值,而不是数据注释 attr。所以我试着与像 DisplayFor 的值

@Html.DisplayFor(model => model.MyName, new { @class = "control-label col-md-6" })

这个 css 类 control-label col-md-6 不适用。 为什么呢?

解决方法 1:

DisplayFor不像其他工作 *For 佣工。像 EditorFor ,这就是所谓的"模板化帮助器"。换句话说,它的呈现被受控制可以修改模板。重要的是,对于这两种方法,如果你看了他们的文档在 MSDN,您将看到将正常的参数对应于 htmlAttributes 与其他佣工,相反是指 additionalViewData 与这两个。这是因为,再次,其输出由本质上的意见,采取控制 ViewData

此外,与 DisplayFor 特别是默认模板非常简单,只是输出值,与没有 HTML。如果你传递一个字符串属性,例如,输出将该字符串而不是其他的价值。因此,没什么领带中的 HTML 属性,即使你可以通过在他们。

如果你想要做你想做什么,你将不得不创建自定义显示模板。这可以通过添加视图命名的类型或成员的 DataType 枚举,到 Views\Shared\DisplayTemplates 。例如,如果您创建了视图在 Views\Shared\DisplayTemplates\String.cshtml ,然后当你调用 DisplayFor 类型的属性 string ,视图将用于呈现它。您然后可以将包装值,否则将只是直接在您的选择一些 HTML 输出和利用 ViewData 应用适当的 HTML 属性。例如︰

<span class="@ViewData["class"]">@ViewData.TemplateInfo.FormattedModelValue</span>
官方微信
官方QQ群
31647020