【发布时间】:2011-11-16 09:56:30
【问题描述】:
假设我有两个 CSS 样式,分别称为 january 和 tuesday。我想将它们应用于我视图中的某些文本字段,具体取决于它是一月还是周二。
选项 A:在控制器中执行逻辑,并将样式放在 ViewData 中。
在控制器中:
if( month == Month.January)
ViewBag.UserNameCssStyles = "january";
if( today == Day.Tuesday )
ViewBag.UserNameCssStyles += " tuesday";
在视图中:
@Html.TextBoxFor(model => model.UserName, new { @class = ViewBag.UserNameCssStyles }
选项 B:在控制器中执行逻辑并在视图中分配样式?
在控制器中:
ViewBag.IsJanuary = (month == Month.January);
ViewBag.IsTuesday = (today == Day.Tuesday);
在视图中:
@if (ViewBag.IsJanuary && !ViewBag.IsTuesday)
{
@Html.TextBoxFor(model => model.UserName, new { @class = "january" })
}
else if (!ViewBag.IsJanuary && ViewBag.IsTuesday)
{
@Html.TextBoxFor(model => model.UserName, new { @class = "tuesday" })
}
else if(ViewBag.IsJanuary && ViewBag.IsTuesday)
{
@Html.TextBoxFor(model => model.UserName, new { @class = "january tuesday" })
}
else
{
@Html.TextBoxFor(model => model.UserName)
}
在我看来,这两种方式都不对。第一个选项使控制器与显示相关,并且还锁定了样式,因此在视图上工作的人无法更改它们,例如,添加第三个类。但第二个选项似乎很逻辑,因为它只是“愚蠢”的观点。
其他人通常如何做到这一点?
【问题讨论】:
标签: asp.net css asp.net-mvc asp.net-mvc-3