2009-04-24 2 views
1

В моем приложении mpc asp.net у меня есть служебный уровень, который работает с бизнес-объектом, передает его на уровень репозитория и возвращает его на контроллер. Нет, я не могу решить, где мне нужно проверить объект. Первое место - использование аннотаций проверки достоверности данных с атрибутом компонента модели аннотаций в бизнес-объектов класса, например:Каков лучший способ/место для проверки?

[AcceptVerbs("POST")] 
    public ActionResult Edit(Source src) 
    { 
     if(!ModelState.IsValid){    
      return View("EditSource", src); 

     _sourceService.SaveSource(src); 

     return RedirectToAction("Index"); 
    } 

[MetadataType(typeof(Source.MetaSource))] 
public class Source 
{ 
    private class MetaSource 
    { 
     [Required] 
     public string Name { set; get; } 
     [Required] 
     public string Url { set; get; } 
    } 

    public int? ID { set; get; } 
    public string Name { set; get; } 
    public string Url { set; get; } 

    public Source() 
    { 
     ID = null; 
    } 

Второй способ - проверять объекты в уровне услуг, путем передачи словаря проверки на уровне услуг, например:

Я думаю о создании проверки на стороне клиента и добавлении локализации к ошибкам проверки, также мне нужно создать пользовательские правила с обращениями к базе данных и т. Д. Какие плюсы и минусы этого пути 2 или, может быть, мне нужно выбрать другой способ?

ответ

1

Определенно стоит прочитать различные варианты - выберите то, что, по вашему мнению, наилучшим образом соответствует вашим потребностям и стилю.

Однако, вы почти наверняка в конечном итоге создание функции проверки на службу в какой-то момент, чтобы справиться с бизнес-правилами, так что может быть тай-брейка :-)

Heres несколько дополнительных ссылок, которые могут полезно также:

Смежные вопросы