#c# #html #asp.net-mvc-3
#c# #HTML #asp.net-mvc-3
Вопрос:
На моей HTML-странице я хочу изменить цвет даты, когда срок ее действия подходит к концу.
<div class="account-label">Billing Expiry Date</div>
@if (Model.BillingCycleID == 1 amp;amp; (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 amp;amp; (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 amp;amp; (DateTime.Now.AddDays(328) == true))
{
<div class="account-field2">@Model.BillingEndDate.ToLongDateString()</div>
}
else
{
<div class="account-field">@Model.BillingEndDate.ToLongDateString()</div>
}
Есть ли лучший способ сделать это? У меня есть дата окончания выставления счетов и дата начала выставления счетов. Цикл выставления счетов предназначен для определенного цикла выставления счетов, который они хотят иметь, будь то ежемесячно, 6 месяцев или ежегодно. Учетная запись — поле 2 меняет его на красный, а учетная запись 1 остается белой. Спасибо 🙂
Ответ №1:
Я бы предложил добавить в ваш метод, 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
подойдет ли вам вместо этого дизайн?
например
public enum BillingCycle
{
Monthly,
Biannually,
Annually
}
Комментарии:
1. Я буду иметь в виду эти предложения. Это было очень полезно. Спасибо 🙂