Я использую ASP.NET MVC DefaultModelBinder
для привязки запроса к классу модели, но только с использованием двух его свойств:
namespace MVCApp.Models
{
public class Ticker
{
public string Symbol {get; set;
public string Exchange {get; set;}
}
}
namespace Domain //in another assembly
{
public class Quote
{
public string Symbol {get; set; }
public string Exchange {get; set; }
//lots of other properties we need for output
}
}
public ActionResult ShowQuote(Ticker ticker)
{
var quote = quoteRespository.GetQuoteBy(ticker);
return View(quote);
}
В представлении они могут указать тикери обмен;и это ModelBound с использованием DefaultModelBinder
.Однако каждый раз, когда нам действительно нужно использовать этот объект Ticker
для чего-либо, нам нужно перейти к QuoteRespository
и получить все свойства, заполненные для этого тикера.
Вопрос
Должен ли я избавиться от объекта Ticker
и просто создать привязку модели к привязке модели к объекту Quote
;и в Modelbinder сделать вызовы репозитория, чтобы фактически заполнить объект Quote
?Или я должен нарушить DRY и сделать звонок в этот репозиторий в каждом месте, где нам нужна цитата?Есть ли встроенный каркасный способ сделать это, которого мне не хватает?
Похоже, что существует школа, которая говорит , а не , чтобы делать вызовы уровня обслуживания вModelbinder .
Обновление
Я создал класс Ticker только потому, что у нас были эти два свойства в (почти) каждом действии:
public ActionResult ShowQuote(string symbol, string exchange)
Поскольку они всегда принадлежат друг другу, я создал небольшой класс Model на уровне пользовательского интерфейса, чтобы объединить их (вышеупомянутый класс Ticker
). Тикер не является классом модели представления и не должен быть .