C# 标签是否不显示值?
我只是想在我的Razor代码中显示一个值。我试过DisplayFor和LabelFor。如果我使用DisplayFor,那么会显示我的值,但不会应用CSS。如果我使用LabelFor,则相反,我的CSS被应用,但文本仅显示为“EmployeeId”。我已经确认,在查看之前,我的ViewModel已经为EmployeeId填充了一个值 这就是我尝试过的: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">
<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>