Sea*_*ean 8 css asp.net asp.net-mvc asp.net-mvc-3
假设我有两种称为january和的CSS样式tuesday.我想将它们应用到我视图中的某些文本字段,具体取决于它是1月还是2月.
选项A:执行控制器中的逻辑,并将样式放在ViewData中.
在控制器中:
if( month == Month.January)
ViewBag.UserNameCssStyles = "january";
if( today == Day.Tuesday )
ViewBag.UserNameCssStyles += " tuesday";
Run Code Online (Sandbox Code Playgroud)
在视图中:
@Html.TextBoxFor(model => model.UserName, new { @class = ViewBag.UserNameCssStyles }
Run Code Online (Sandbox Code Playgroud)
选项B:执行控制器中的逻辑并在视图中指定样式?
在控制器中:
ViewBag.IsJanuary = (month == Month.January);
ViewBag.IsTuesday = (today == Day.Tuesday);
Run Code Online (Sandbox Code Playgroud)
在视图中:
@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)
}
Run Code Online (Sandbox Code Playgroud)
这两种方式对我来说都不对.第一个选项让控制器关注自己的显示,并且还有一些锁定样式,因此在视图上工作的人不能更改它们,比如添加第三个类.但是第二种选择似乎非常逻辑,因为它只是"愚蠢"的观点.
其他人通常如何做到这一点?
Tod*_*ith 10
选项C:执行控制器中的逻辑并在视图中分配样式,但方式更简单:
在控制器中:
ViewBag.IsJanuary = (month == Month.January);
ViewBag.IsTuesday = (today == Day.Tuesday);
Run Code Online (Sandbox Code Playgroud)
在视图中:
@string userNameClass = string.Empty;
@userNameClass += ViewBag.IsJanuary ? "january " : "";
@userNameClass += ViewBag.IsTuesday ? "tuesday " : "";
@Html.TextBoxFor(model => model.UserName, new { @class = userNameClass })
Run Code Online (Sandbox Code Playgroud)
否则你的控制器会受到视图问题的污染.除非你是google并且每个字节都很重要,否则空类几乎是无害的.
| 归档时间: |
|
| 查看次数: |
6539 次 |
| 最近记录: |