Вызов методов в App_Code из пользовательского элемента управления ASP.NET - PullRequest
0 голосов
/ 20 июня 2011

Я использую 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
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...