Другой возможностью было бы использование некоторого механизма кэширования для вашей логики BL. Например, в вашей странице/UserControl вы могли бы (не принимать мой синтаксис слишком строги))
общественный частичный класс MyPaged: Страница {
общественной недействительным Pageload (..) {
if(!IsPostBack)
{
dropDownCountries.DataSource = CountryBL.GetCountries();
dropDownCountries.DataBind();
}
...
}
}
и в вашей бизнес-логики класса вы делаете какой-то кэширования, где вы может иметь одноэлементный класс, который держит страны и функционирует как ваш кеш. Способ псевдокод может быть
public IList<Country> GetCountries
{
//if the cache is empty or it should be refreshed, fills the local
//list of countries, i.e. the cache, with fresh entries from the DB
//there could be some time condition, i.e. refresh every day or so
EnsureCacheValid();
return CachedCountries; //the cache of countries
}
Это может быть еще один вариант с тем преимуществом, что ваша логика представления даже не знает о кэшировании, и если бы вы добавить доступ WebService или около того, вы также извлечь выгоду из кэширования , Единственное, на что вы должны обратить внимание, - это возможность того, что пользователь может изменить страны (что в вашем примере я не предполагаю).
Просто чтобы быть ясным: вы хотите привязать выпадающие списки, но не к базе данных? Если да, рассмотрели ли вы объект ObjectBindingSource? –
звучит скорее как он не хочет ударять БД при любой обратной передаче. С ObjectBindingSource это все равно произойдет. Это просто еще один способ привязки к пользовательскому интерфейсу. – Juri