Я создаю приложение asp.net mvc 3 в Visual Studio 2010. Я пытаюсь использовать FluentValidation для своих моделей. Я установил пакеты (FluentValidation, FluentValidationMVC3) с помощью NuGet. Мои модели являются следующие (упрощенно для этого форума):Сообщение об ошибке с использованием FluentValidation в приложении MVC3
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);
}
ModelState всегда верно даже тогда, когда я задаю недопустимые значения и экземпляр TimeModel. Затем проект бомбит, когда он попадает на личность. Строка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 \ Свойства \ 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, имел эту проблему? Что мне нужно сделать, чтобы решить эту проблему? Мой проект находится на сетевом ресурсе, если это имеет значение.
Спасибо за быстрый ответ. Боже, я не могу поверить, что я пропустил это. Наверное, я слишком долго смотрел на код. – FrstCBC