Здравствуйте.
Есть сайт на asp.net mvc (в разработке). Много страниц, описывающих что-либо. Например, страница, где можно редактировать свойства книги (она же для создания новой). Там на этой странице из выпадающих списков можно выбрать например, язык, на котором написана книга, страну, где она издалась, издателя и т.д.
А теперь вопросы.
1. Поскольку модель сущности книги содержит информацию только о данной сущности, то приходится списки (которые будут загружены в выпад. списки) подгружать дополнительно. Я это делаю через ViewData. На странице примерно так получается:
<option value="0" selected>Select language</option>
<% foreach (Language lang in (List<Language>)ViewData["Languages"])
{ %>
<option value="<% = lang.LanguageId %>"><%= lang.LanguageEnglishName %></option>
<%} %>
</select>
Правильный ли это подход? Или лучше как-то по-другому делать? Т.е. вопрос не о реализации дропдауна, а о реализации подхода в целом (через ViewData).
2. Когда списков несколько, то и вьюдат приходится создавать несколько. В результате в контроле код получается например такой:
LanguageRepository langRep = new LanguageRepository();
ViewData["Languages"] = langRep.AllLanguages();
PublishingHouseRepository houseRep = new PublishingHouseRepository();
ViewData["PH"] = houseRep.AllPublishingHouses();
Соответственно каждый репозиторий дергает контекст:
using (LangDBContext context = new LangDBContext())
{
languages = context.Languages.Select(l => l).ToList();
}
return languages;
Но ведь каждый раз, когда дергается этот контекст (из модели EF), создается соединение, потом разрывается, потом опять создается и т.д. По-моему, при наличии достаточно большого числа юзеров база данных просто отвалится. Или нет? Одним словом, правильный ли это подход? (Про IoC пока не надо, я это реализую в дальнейшем, пока хотелось бы просто понять, как правильно реализовывать на этом уровне.)
Спасибо!