C# 标签是否不显示值?

C# 标签是否不显示值?,c#,asp.net-mvc,razor,html-helper,C#,Asp.net Mvc,Razor,Html Helper,我只是想在我的Razor代码中显示一个值。我试过DisplayFor和LabelFor。如果我使用DisplayFor,那么会显示我的值,但不会应用CSS。如果我使用LabelFor,则相反,我的CSS被应用,但文本仅显示为“EmployeeId”。我已经确认,在查看之前,我的ViewModel已经为EmployeeId填充了一个值 这就是我尝试过的: <div class="row voffset2"> <div class="col-md-12">

我只是想在我的Razor代码中显示一个值。我试过DisplayFor和LabelFor。如果我使用DisplayFor,那么会显示我的值,但不会应用CSS。如果我使用LabelFor,则相反,我的CSS被应用,但文本仅显示为“EmployeeId”。我已经确认,在查看之前,我的ViewModel已经为EmployeeId填充了一个值

这就是我尝试过的:

<div class="row voffset2">
    <div class="col-md-12">
        Employee ID: @Html.LabelFor(m => m.EmployeeId, new { @class = "control-label label-value" })
    </div>
</div>

<div class="row voffset2">
    <div class="col-md-12">
        Employee ID: @Html.DisplayFor(m => m.EmployeeId, new { @class = "control-label label-value" })
    </div>
</div>

员工ID:@Html.LabelFor(m=>m.EmployeeId,新的{@class=“control label-label-value”})
员工ID:@Html.DisplayFor(m=>m.EmployeeId,新的{@class=“control label value”})
首先,没有超负荷的
htmlAttributes
因此
new{@class=“control label label value”}
不起作用,其次不显示属性的值,它只显示属性的名称,因此 你可以这样做

<div class="row voffset2">
    <div class="col-md-12">
        Employee ID: <span class"ontrol-label label-value">@Html.DisplayFor(m => m.EmployeeId)</span>
    </div>
</div>

员工ID:@Html.DisplayFor(m=>m.EmployeeId)
这将起作用:

public class LabelViewModel
{
    [Display(Name = "Employee\nId")]
    public int EmployeeId { get; set; }

    //display for is for iterating over a collection
    public IList<string> Employees { get; set; }
}

public class HomeController : Controller
{
    public ActionResult Index54()
    {
        //display for is for iterating over a collection
        LabelViewModel labelViewModel = new LabelViewModel();
        labelViewModel.Employees = new List<string>();
        labelViewModel.Employees.Add("emp1");
        labelViewModel.Employees.Add("emp2");
        return View(labelViewModel);
    }
公共类LabelViewModel
{
[显示(Name=“Employee\nId”)]
public int EmployeeId{get;set;}
//显示用于在集合上进行迭代
公共IList雇员{get;set;}
}
公共类HomeController:控制器
{
公共行动结果索引54()
{
//显示用于在集合上进行迭代
LabelViewModel LabelViewModel=新的LabelViewModel();
labelViewModel.Employees=新列表();
labelViewModel.Employees.Add(“emp1”);
labelViewModel.Employees.Add(“emp2”);
返回视图(labelViewModel);
}
视图:

@model testy2016 1006.Controllers.LabelViewModel
@{
布局=空;
}
索引54
C.斯沃克斯先生{
颜色:红色
}
员工ID:@Html.LabelFor(m=>m.EmployeeId,新的{@class=“cssworks控件标签值”})
@*显示用于在集合上进行迭代*@
@*更改了下一行,因为无法将类放入displayfor中*@
员工ID:@Html.DisplayFor(m=>m.Employees)

仅供参考:
DisplayFor
是一个模板化的助手。这意味着,输出基于“显示模板”。大多数属性类型的默认显示模板只输出不带HTML的值。因此,没有任何应用
htmlAttributes
参数的方法,即使它实际上允许您传入该参数。您可以创建自己的自定义显示模板并包含HTML,但由于它是自定义模板,您将负责设置手动清除HTML中的属性。
DisplayFor
接受可用于传递值的
additionalViewData
。谢谢,这两个答案似乎都是正确的,但我需要的似乎是DisplayFor。我感谢所有额外的信息,以便我能够真正理解这两个助手之间的差异。
@model Testy20161006.Controllers.LabelViewModel
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index54</title>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <style type="text/css">
        .cssworks {
            color: red
        }
    </style>
</head>
<body>
    <div class="row voffset2">
        <div class="col-md-12">
            Employee ID: @Html.LabelFor(m => m.EmployeeId, new { @class = "cssworks control-label label-value" })
        </div>
    </div>

    <div class="row voffset2">
        <div class="col-md-12">
            @*display for is for iterating over a collection*@
            @*changed the next line, since you can't put a class in displayfor*@
            Employee ID: <span class="cssworks">@Html.DisplayFor(m => m.Employees)</span>
        </div>
    </div>
</body>
</html>