更新:我只是在寻找有关如何实施 IsHighlighted 方法的提示
我重复了以下类型的代码:
$.when( $.ajax( "https://httpbin.org/get?Z=Y,X,W" ),
$.ajax( "https://httpbin.org/get?A=B,C,D" ) )
.then( goodFetches, badFetches );
每个X也有一个<div class="@GetCssClass(Model.IsProperty1Highlighted)">@Model.Property1
<div class="@GetCssClass(Model.IsProperty2Highlighted)">@Model.Property2
<div class="@GetCssClass(Model.IsProperty3Highlighted)">@Model.Property3
属性太丑了,如果我有一个方法可以做这样的事情会很好:
IsPropertyXHighlighted
我认为这对表达式是可行的,但我不知道如何。关于如何做到这一点的任何提示或更清洁的方法来获得类似的结果?
例如:让我们说Proprty1需要突出显示,因为它是一个日期时间,它是星期四,Property2需要突出显示,因为它是布尔值而且为false,属性3是整数,甚至需要突出显示< / p>
答案 0 :(得分:1)
我认为你的第一位看起来像这样:
public static class HtmlExtensions
{
public static IHtmlString GetHighlightClass(this HtmlHelper htmlHelper, bool shouldHighlight)
{
return shouldHighlight ? MvcHtmlString.Create("highlight") : null;
}
}
如果应该突出显示某些内容的规则,则可能有另一个静态类:
public class HighlightHelper
{
public static bool IsHighlighted(object obj)
{
bool shouldHighlight = false;
if(obj is DateTime)
{
var date = (DateTIme)obj;
shouldHighlight = date != null && date.DayOfWeek == DayOfWeek.Thursday;
}
else if(obj is int)
{
var number = (int)obj;
shouldHighlight = number % 2 == 0;
}
// et cetera...
return shouldHighlight;
}
}
然后你可以使用与你的第二个猜测类似的东西:
<div class="@Html.GetHighlightClass(HighlightHelper.IsHighlighted(Model.Property1))">@Model.Property1</div>
您可以通过移动HtmlHelper中的IsHighlighted检查来清理它:
public static IHtmlString GetHighlightClass(this HtmlHelper htmlHelper, object obj)
{
bool shouldHighlight = HighlightHelper.IsHighlighted(obj);
return shouldHighlight ? MvcHtmlString.Create("highlight") : null;
}
然后你的观点可能有这个:
<div class="@Html.GetHighlightClass(Model.Property1)">@Model.Property1</div>
并且,为了证明它有效,一些测试:
using System;
using FluentAssertions;
using NUnit.Framework;
namespace YourNamespace.Tests
{
[TestFixture]
public class HighlightHelperTests
{
[Test]
public void HighlightHelper_Int_Tests()
{
bool shouldHighlight = false;
shouldHighlight = HighlightHelper.IsHighlighted(3);
shouldHighlight.Should().BeFalse();
shouldHighlight = HighlightHelper.IsHighlighted(14);
shouldHighlight.Should().BeTrue();
}
[Test]
public void HighlightHelper_DateTime_Tests()
{
bool shouldHighlight = false;
shouldHighlight = HighlightHelper.IsHighlighted(new DateTime(2016, 7, 13));
shouldHighlight.Should().BeFalse();
shouldHighlight = HighlightHelper.IsHighlighted(new DateTime(2016, 7, 14));
shouldHighlight.Should().BeTrue();
}
}
}