我正在 Visual Studio 2010 中创建一个 asp.net mvc 3 应用程序。我试图为我的模型使用 FluentValidation。我使用 NuGet 安装了包(FluentValidation、FluentValidationMVC3)。我的模型如下(为本论坛简化):
public class ActivityLine : AbstractValidator<ActivityLine>
{
[Key]
[Required]
public int ActivityLineId { get; set; }
public virtual ICollection<TimeModel> TimeModels { get; set; }
}
public class ActivityLineValidator : AbstractValidator<ActivityLine>
{
public ActivityLineValidator()
{
RuleFor(x => x.TimeModels).SetCollectionValidator(new TimeModelValidator());
}
}
[Validator(typeof(TimeModelValidator))]
public class TimeModel
{
[Key]
public int TimeModelId { get; set; }
[Required]
public int ActivityLineId { get; set; }
[Required]
public int LineNumber { get; set; }
public int startHours { get; set; }
public int startMinutes { get; set; }
public int endHours { get; set; }
public int endMinutes { get; set; }
public virtual ActivityLine ActivityLine { get; set; }
[NotMapped]
public TimeSpan StartTime
{
get { return new TimeSpan(startHours, startMinutes, 0); }
set { startHours = value.Hours; startMinutes = value.Minutes; }
}
[NotMapped]
public TimeSpan EndTime
{
get { return new TimeSpan(endHours, endMinutes, 0); }
set { endHours = value.Hours; endMinutes = value.Minutes; }
}
}
public class TimeModelValidator : AbstractValidator<TimeModel>
{
public TimeModelValidator()
{
RuleFor(timemodel => timemodel.endHours)
.GreaterThan(timemodel => timemodel.startHours)
.WithMessage("Start Time Must be before End Time");
}
}
在我的控制器中:
[HttpPost]
public ActionResult Create(ActivityLine model)
{
if (ModelState.IsValid)
{
personnel.ActivityLines.Add(model);
personnel.SaveChanges();
return RedirectToAction("Index");
}
//Model State Not Valid Redisplay Form
return View(model);
}
即使我为 TimeModel 和实例分配无效值,ModelState 也始终为真。然后,该项目在遇到 person.SaveChagnes() 行时会发生炸弹。我收到“无可用来源”错误。详情如下:
Locating source for 'c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs'. Checksum: MD5 {e3 d4 90 62 70 f7 a6 4e 9e ac 62 71 77 21 64 dd}
文件 'c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs' 不存在。在脚本文档中查找“c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs”...在项目中查找“c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs”。在项目中找不到该文件。查看目录'C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\'... 查看目录'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\'。 .. 查看目录 'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl\'... 查看目录 'C:\Program Files\Microsoft Visual Studio 10.0\VC\atlmfc\include\ '... 活动解决方案的调试源文件设置表明调试器不会要求用户查找文件:c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs。调试器找不到源文件 'c:\Projects\FluentValidation\src\FluentValidation\Attributes\ValidatorAttribute.cs'。
我认为我的配置有问题,但我不知道是什么。使用 Fluent 的人有没有遇到过这个问题?我需要做什么来解决它?如果有影响,我的项目位于网络共享上。