Я использую VS2008 и у меня есть файл решения, который содержит 1 веб-сайт и 1 проект библиотеки классов.
Библиотека классов - это пользовательский элемент управления, производный от Label
. Веб-сайт содержит ссылку на элемент управления - он успешно собирается, и скомпилированный файл DLL добавляется в папку /bin
Веб-сайта. Затем я могу использовать его на любой странице .aspx сайта без ошибок.
Однако я не могу сослаться на любой из методов доступа к данным Веб-сайта, которые находятся в статических классах в /App_Code
, из пользовательского элемента управления.
Я не хочу повторять логику доступа к данным веб-сайта снова в рамках пользовательского элемента управления, когда я знаю, что она уже существует на веб-сайте - я просто хочу иметь возможность вызывать метод из класса в /App_Code
, Если я попытаюсь сослаться на что-нибудь в /App_Code
из библиотеки классов, он не сможет скомпилировать и скажет, что не может найти пространство имен или что оно не существует в текущем контексте.
Как я могу добиться этого, чтобы пользовательский элемент управления создавался как отдельный элемент управления, но мог использовать классы на веб-сайте, на котором он используется? Возможно, делегаты? Надеюсь, что это может быть более простым, чем это.
РЕДАКТИРОВАТЬ: я должен добавить, что причина, по которой элемент управления находится в отдельной библиотеке классов, заключается в том, что я могу включить JavaScript как встроенный ресурс в элемент управления. Поэтому, когда он используется на странице .aspx, он добавляет ссылку на страницу в стиле WebResource.axd?
вместо загрузки открытого текста JavaScript в разделе <head>
.
РЕДАКТИРОВАТЬ 2:
В папке App_Code веб-сайта у меня есть статический класс, который обрабатывает доступ к данным (фрагмент):
[DataObject]
public static class DBAccess
{
[DataObjectMethod(DataObjectMethodType.Select)]
public static DataTable GetSomeData(Int32 SomeParam, DateTime OtherParam)
{
SqlConnection cn = SqlLibrary.GetConnection(DBConnectionString);
DataTable _dt;
SqlLibrary.SProcFill(out _dt, cn, "usp_SomeData_Select", SomeParam, OtherParam);
return _dt;
}
}
В пользовательском элементе управления библиотеки классов (который я хочу создать независимо от существования веб-сайта, но при этом иметь возможность вызывать его методы при использовании в качестве элемента управления на странице .aspx):
namespace MyCustomControls
{
public class StatusControl : Label
{
private Int32 _someProperty = -1;
private DateTime _otherProperty = DateTime.Now;
public StatusControl()
{
//some constructor logic
}
public void FetchData()
{
//what I'd **like** to do here is:
DBAccess.GetSomeData(_someProperty, _otherProperty);
//...but DBAccess isn't "visible" to this control at build time
}
}
}