Говоря о Extension Methods
Я считаю, что это был бы хороший вариант использования для расширения HtmlHelper
Мне кажется, что «стиль оценки» будет повторно использоваться во всем приложении, и если вы обнаружите, что используетеэто более чем в одном ViewModel
, вы можете начать повторять код.
Заметьте, я бы не стал хранить метод private static string GetRatingStyle()
в расширениях, я бы извлек его в ваш домен или класс бизнес-логики..
HtmlHelperExtensions.cs
public static class HtmlHelperExtensions
{
public static IHtmlContent GetRatingStyle(this IHtmlHelper html, double? rating)
{
var tagBuilder = new TagBuilder("div");
tagBuilder.AddCssClass(GetRatingStyle(rating));
return tagBuilder;
}
private static string GetRatingStyle(double? rating)
{
if (!rating.HasValue)
return "";
switch (rating)
{
case var _ when rating < 2.5:
return "low";
case var _ when rating >= 2.5 && rating < 5:
return "medium";
case var _ when rating >= 5 && rating < 7.5:
return "medium-high";
case var _ when rating >= 7.5:
return "high";
default:
return "";
}
}
}
Использование:
@Html.GetRatingStyle(Model.Movie.Rating)