我有四个DateTime对象.A1,A2和B1,B2.
我需要知道A1-A2期间与期间B1-B2不相交.但我不想编写脏代码,就像许多块一样.
if (A1 < B1 && A2 > B1)
{
    return false;
}
Run Code Online (Sandbox Code Playgroud)
....等
EDITED
我尝试使用这个:比较范围
DateTime A1 = DateTime.MinValue.AddMinutes(61);
DateTime A2 = DateTime.MinValue.AddHours(1.2);
DateTime B1 = DateTime.MinValue.AddMinutes(5);
DateTime B2 = DateTime.MinValue.AddHours(1);
Console.WriteLine(Range.Overlap(
    new Range<DateTime>(A1, A2),
    new Range<DateTime>(B1, B2)
));
Run Code Online (Sandbox Code Playgroud)
它返回true但我预计会错误.因为此代码始终返回true
 if (left.Start.CompareTo(left.Start) == 0)
 {
     return true;
 }
Run Code Online (Sandbox Code Playgroud) 我用了Fluent Validator.但有时我需要创建一个规则层次结构.例如:
[Validator(typeof(UserValidation))]
public class UserViewModel
{
    public string FirstName;
    public string LastName;
}
public class UserValidation : AbstractValidator<UserViewModel>
{
    public UserValidation()
    {
        this.RuleFor(x => x.FirstName).NotNull();
        this.RuleFor(x => x.FirstName).NotEmpty();
        this.RuleFor(x => x.LastName).NotNull();
        this.RuleFor(x => x.LastName).NotEmpty();
    }
}
public class RootViewModel : UserViewModel
{
    public string MiddleName;       
}
Run Code Online (Sandbox Code Playgroud)
我想从UserValidation继承验证规则到RootValidation.但是这段代码不起作用:
public class RootViewModelValidation:UserValidation<RootViewModel>
{
    public RootViewModelValidation()
    {
        this.RuleFor(x => x.MiddleName).NotNull();
        this.RuleFor(x => x.MiddleName).NotEmpty();
    }
}
Run Code Online (Sandbox Code Playgroud)
如何使用FluentValidation继承验证类?
我得到了erorr:
不显眼的客户端验证规则中的验证类型名称必须是唯一的.以下验证类型不止一次出现:必需.以下验证类型不止一次出现:必需
我用过服务器验证.一切正常.但现在我说要使用客户端验证,我遇到了这个问题.
这是我的验证类代码:
public class TestViewDataValidation : BaseTestCreateViewDataValidation<BaseTestCreateViewData>
    {
public TestViewDataValidation ()
        {
            this.RuleFor(x => x.Login).NotNull();
            this.RuleFor(x => x.Login).NotEmpty();
            this.RuleFor(x => x.Login).EmailAddress();          
        }
}
Run Code Online (Sandbox Code Playgroud)
但如果我留下一个验证器 - 一切正常.我该怎么做才能为字段提供更多的验证.
我有与ASP.NET MVC部分视图一样大致相同的问题:输入名称前缀
我想为这些数据实体创建CRUD操作:
public class UserViewModel 
{  
   protected virtual Id {get; set;} 
   public virtual string Login { get; set; }
   public virtual string Password { get; set; }
   public virtual ZipCodeViewModel ZipCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
邮政编码实体:
public class ZipCodeViewModel
{        
   public virtual string City { get; set; }
   public virtual string State { get; set; }           
   public virtual string Zip { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我也有部分视图ZipCode使用UserViewModel.ZipCode:
@model ZipCodeViewModel    
    @Html.TextBoxFor(x => x.Zip, new { id = …Run Code Online (Sandbox Code Playgroud) 我使用流畅的验证和客户端不显眼的验证。
 <fieldset class="edit-root-form">
    <p>
        @Html.LabelFor(model => model.Login, UserRes.Login)
        @Html.TextBoxFor(model => model.Login)
        @Html.ValidationMessageFor(model => model.Login)
    </p>         
</fieldset>
Run Code Online (Sandbox Code Playgroud)
流畅的验证规则:
 this.RuleFor(x => x.Login).NotNull().EmailAddress()
Run Code Online (Sandbox Code Playgroud)
我收到了这样的错误消息:“ {PropertyName} ”不能为空。
生成的html:
<input data-val="true" data-val-regex="&#39;{PropertyName}&#39; is not a valid
email address."  data-val-required="&#39;{PropertyName}&#39; must not be
 empty." id="Login" name="Login" type="text" value="" class="input-validation-error">
Run Code Online (Sandbox Code Playgroud)
为什么MVC不替换PropertyName 真实字段名?
我想以JSON格式在隐藏字段中保存视图模型.一切正常.
但是当我试图得到它时 - 我得到错误:
未捕获错误:无法解析绑定.消息:ReferenceError:未定义selectAll; 绑定值:选中:AllCheck,单击:selectAll
视图模型
function AppViewModel() {
//Week
this.AllCheck = ko.observable(false);
this.DaysOfWeekResult = ko.observableArray();
this.selectAll = function () {
    if (this.AllCheck()) {
        viewModel.DaysOfWeekResult.removeAll();
        viewModel.DaysOfWeekResult.push("Mo");
        viewModel.DaysOfWeekResult.push("Tu");
        viewModel.DaysOfWeekResult.push("We");
        viewModel.DaysOfWeekResult.push("Th");
        viewModel.DaysOfWeekResult.push("Fr");
        viewModel.DaysOfWeekResult.push("Sa");
        viewModel.DaysOfWeekResult.push("Su");
    }
    return true;
};
    this.dayClicked = function () {
    checkDays();
    return true;
};        
Run Code Online (Sandbox Code Playgroud)
}
初始化代码
var viewModel;    
$().ready(function (){
        viewModel = new AppViewModel();
var viewModelDeserialized = ko.mapping.fromJSON(serializedJsonString, viewModel);
        ko.applyBindings(viewModel);
}); 
function checkDays() {
    viewModel.AllCheck(viewModel.DaysOfWeekResult().length == 7);   
}  
Run Code Online (Sandbox Code Playgroud)
序列化模型
var serializedJsonString = '"AllCheck":false,"DaysOfWeekResult":[]}';
Run Code Online (Sandbox Code Playgroud)
标记
<div class="check-block">
                <input …Run Code Online (Sandbox Code Playgroud) 我想测试一些代码:
public ViewModel FillClientCreateViewModel(ViewModel model){
    model.Phone = new Phone { Name = "Test"};
    model.Phone = _entityInitializer.FillViewModel(model.Phone);
}
Run Code Online (Sandbox Code Playgroud)
我还想设置FillViewModel以返回我给它的相同对象.
我的测试:
     entityInitMock.Setup(x => x.FillViewModel(It.IsAny<PhoneViewModel>())).Returns(It.IsAny<PhoneViewModel>());
 var result = TestedInstance.FillClientCreateViewModel(CreateViewModel);
 result.Phone.Name.ShouldBe("Test");
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我的测试失败了 - 因为result.Phone.Name被我的模拟器清理干净了.
我如何设置模拟只是给我相同的对象,我给它.
我看到了连接主题但是......
我试图实现规范模式.如果我使用System.Linq.ExpressionsAPI 显式创建Or或And Expression ,我将收到错误
从作用域引用的InvalidOperationExpression变量'x'.
例如,这是我的代码
public class Employee
{
    public int Id { get; set; }
}
Expression<Func<Employee, bool>> firstCondition = x => x.Id.Equals(2);
Expression<Func<Employee, bool>> secondCondition = x => x.Id > 4;
Expression predicateBody = Expression.OrElse(firstCondition.Body, secondCondition.Body);
Expression<Func<Employee, bool>> expr = 
    Expression.Lambda<Func<Employee, bool>>(predicateBody, secondCondition.Parameters);
Console.WriteLine(session.Where(expr).Count()); - //I got error here
Run Code Online (Sandbox Code Playgroud)
EDITED
我尝试使用Linq到Nhibernate的规范模式,所以在我的工作代码中它看起来像:
ISpecification<Employee> specification = new AnonymousSpecification<Employee>(x => x.Id.Equals(2)).Or(new AnonymousSpecification<Employee>(x => x.Id > 4));
var results = session.Where(specification.is_satisfied_by());
Run Code Online (Sandbox Code Playgroud)
所以我想使用像x => x.Id> …