Как заставить конфигурацию Fluent API работать с проверкой на стороне клиента MVC?

Я предпочитаю работать с конфигурацией Fluent API вместо DataAnnotation, потому что хочу отделить модель от доступа к данным.

Я пробовал использовать MVC, Fluent API не работает с проверкой на стороне клиента. Короче говоря, есть ли простой способ заставить Fluent API работать с проверкой на стороне клиента, как это может сделать DataAnnotation?

26
задан kiss my armpit 17 January 2012 в 12:10
поделиться

1 ответ

Сегодня я некоторое время боролся с этим, и это не строго клиентская проверка, так как она требует двусторонней проверки, но она позволяет вам воспользоваться сводкой проверки и помощниками сообщений в стандартном шаблоне. В вашем методе действия контроллера вы просто упаковываете свой вызов SaveChanges() в try-catch и добавляете полученные ошибки в ModelState следующим образом:

try {

    //This does not pick up fluent validation failures
    if (ModelState.IsValid) {
        db.Entity.Add(entity);
        db.SaveChanges();
        //Users want to create loads of my entities without seeing the index...
        return RedirectToAction("Create");
    }

} catch (DbEntityValidationException e) {

    //Log errors
    foreach (var result in e.EntityValidationErrors) {
        foreach(var error in result.ValidationErrors){
            ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
        }
    }

}

//return to view with current model + validation errors 
return View(entity)

Это, конечно, потребует немного больше работы, если Вы сохраняете несколько объектов здесь.

Конечно, использование объектов модели представления, как полагает Ладислав, было бы правильным подходом, однако я использовал его для поддержки тестового пользовательского интерфейса, запрошенного для тестирования интеграции последующих систем с опережением графика ...

3
ответ дан 28 November 2019 в 07:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: