我正在使用以下代码在我的视图中显示来自我的视图模型的文本:
@Html.DisplayFor(m => m.Name)
当我查看 IE9 中的 HTML 详细信息(我必须在工作中使用)时,没有与名称关联的类,它只是使用 Body CSS 样式而不是 display-field 类样式。有谁知道可能导致此问题的原因或我如何编辑所创建文本的 CSS?
我正在使用以下代码在我的视图中显示来自我的视图模型的文本:
@Html.DisplayFor(m => m.Name)
当我查看 IE9 中的 HTML 详细信息(我必须在工作中使用)时,没有与名称关联的类,它只是使用 Body CSS 样式而不是 display-field 类样式。有谁知道可能导致此问题的原因或我如何编辑所创建文本的 CSS?
如果它是标签,请按照 Nataka526 的建议使用适当的助手
否则将其与一个类放在一个跨度中并更新该类的css:
你的html:
<span class="name">
@Html.DisplayFor(m => m.Name)
</span>
你的CSS:
.name {
//custom css
}
更新
另一种选择:更新您的显示模板以处理特定的 ViewData 键:
在 Views > Shared > DisplayTemplate 中(如果您还没有此文件夹,请创建此文件夹):
添加文件 String.cshtml:
@model string
@{
string myClass = ViewData["class"]
}
@if(string.IsNullOrEmpty(myClass))
{
@:@Model
}
else
{
<span class="@myClass">@Model</span>
}
除了字符串之外,您可能还需要为其他提示添加 DisplayTemplates。
在视图中,您将编写如下内容:
@Html.DisplayFor(m => m.Name, new { @class= "name" })
这将自动在其周围添加跨度。
更新
解释:
有一个重载,Html.DisplayFor
它接受两个参数:表达式和object additionalViewData
。所以我传递的第二个参数是匿名对象additionalViewData。我用名为的属性创建了这个对象class
然后,在 html 帮助器内部,我检查是否有带有键的 ViewData,class
如果有,我将输出放在具有该类值的范围内。
** 将变量名称从 更新为class
,myClass
因为“类”不是合适的变量名称。
DisplayFor 用于模板的原因。如果您不使用模板,那么您应该像这样使用该项目:@Model.Name
如果您想给它一个类或 id,那么您需要将它包装在一个跨度或 div 中。
您的问题是您使用错误的方法来输出数据,并期望它做其他事情。没有内置方法可以输出带有类名的原始数据。
所以你的选择是,将原始项目包装在一个可以应用 css 的容器中,或者创建一个模板用于这些,然后在 DisplayFor 中指定模板名称,如下所示:
@Html.DisplayFor(m => m.Name, "NameTemplate")