如何在MVC 3中编辑Html.DisplayFor方法的CSS?

我使用以下代码在我的视图中显示视图模型中的文本:

@Html.DisplayFor(m => m.Name) 

当我查看IE9中的HTML细节(我必须在工作中使用)时,没有与该名称相关联的类,它只使用Body CSS样式而不是display-field类样式。 有谁知道可能导致此问题的原因或我如何编辑创建的文本的CSS?

DisplayFor用于模板原因。 如果你没有使用模板,那么你应该只使用这样的项目: @Model.Name如果你想给它一个类或id,那么你需要将它包装在span或div中。

您的问题是您使用错误的方法输出数据,并期望它做其他事情。 没有内置的方法来输出带有类名的原始数据。

所以你的选择是,将原始项包装在可以应用css的容器中,或者创建一个用于这些的模板,然后在DisplayFor中指定模板名称,如下所示:

  @Html.DisplayFor(m => m.Name, "NameTemplate") 

如果它是一个标签,请使用适当的帮助,因为Nataka526建议

否则将其放在带有类的范围内并更新该类的css:

你的HTML:

  @Html.DisplayFor(m => m.Name)  

你的css:

 .name { //custom css } 

UPDATE

另一个选项:更新显示模板以处理特定的ViewData键:

在Views> Shared> DisplayTemplate中(如果你还没有,请创建此文件夹):

添加文件String.cshtml:

 @model string @{ string myClass = ViewData["class"] } @if(string.IsNullOrEmpty(myClass)) { @:@Model } else { @Model } 

除了字符串之外,您可能还需要为其他tipes添加DisplayTemplates。

在视图中,您将编写如下内容:

 @Html.DisplayFor(m => m.Name, new { @class= "name" }) 

这将自动添加围绕它的跨度。

UPDATE

说明:

Html.DisplayFor上有一个重载,它接受两个参数:expression和object additionalViewData 。 所以我传递的第二个参数是匿名对象additionalViewData。 我用名为class属性创建此对象

在html帮助器内部,然后检查是否存在具有键class的ViewData,如果有,我将输出放在具有该类值的span中。

**更新了从classmyClass变量名,因为“class”不是合适的变量名。