当有效期即将结束时更改文本的颜色。 C#Mvc 3

时间:2011-04-14 19:14:54

标签: c# html asp.net-mvc-3

在我的html页面上,我想在接近过期时更改日期的颜色。

<div class="account-label">Billing Expiry Date</div>
   @if (Model.BillingCycleID == 1 && (DateTime.Now.AddDays(23) == true))
      {
        <div class="account-field2">@Model.BillingEndDate.ToLongDateString()</div>
      }
   else
      {
         <div class="account-field">@Model.BillingEndDate.ToLongDateString()</div>
      }

@if (Model.BillingCycleID == 2 && (DateTime.Now.AddDays(176) == true))
    {
        <div class="account-field2">@Model.BillingEndDate.ToLongDateString()</div>
    }
    else
    {
        <div class="account-field">@Model.BillingEndDate.ToLongDateString()</div>
    }

    @if (Model.BillingCycleID == 3 && (DateTime.Now.AddDays(328) == true))
    {
        <div class="account-field2">@Model.BillingEndDate.ToLongDateString()</div>
    }
    else
    {
        <div class="account-field">@Model.BillingEndDate.ToLongDateString()</div>
    }

有更好的方法吗?我有结算结束日期和结算开始日期。结算周期适用于他们希望每月,每月,每月或每年的特定结算周期。帐户 - 字段2将其更改为红色,帐户1保持白色。谢谢:))

1 个答案:

答案 0 :(得分:3)

我建议在Model中添加一个方法,用于定义Model是否即将到期。这将简化您的视图并将业务逻辑封装在Model中,从而保持关注点的MVC分离。类似的东西:

@if (Model.IsCloseToExpiring())
{
    <div class="account-field2">@Model.BillingEndDate.ToLongDateString()</div>
}
else
{
    <div class="account-field">@Model.BillingEndDate.ToLongDateString()</div>
}

需要考虑的其他事项:

  • 避免使用幻数,定义帐号即将到期的天数const。它将使代码更容易理解,并且将来更容易修改,例如,您希望将这些值保留在配置或数据库中。

  • Model.BillingCycleID不是很具描述性,enum是否符合您的设计?

e.g。

public enum BillingCycle
{
    Monthly,
    Biannually,
    Annually
}