Приведите ascx в класс App_Code - PullRequest
2 голосов
/ 04 марта 2011

У меня есть ascx, который я хочу загрузить и привести из класса, который находится внутри App_Code. Я не могу заставить его работать из класса App_Code, хотя я могу заставить его работать со страницы aspx.

Техника ASPX-страниц отлично работает со следующим кодом:

pc = LoadControl("enquirycapture.ascx");
((ASP.enquirycapture_ascx)pc).CustomProperty = customObject;

(Примечание: у меня есть следующее на странице aspx:)

<%@ Reference VirtualPath="~/enquirycapture.ascx" %>

Однако, когда я пытаюсь привести элемент управления из класса App_Code, он не может «видеть» класс ascx, и поэтому я не могу привести его к нему, чтобы установить пользовательские свойства (я могу загрузить его, но не могу брось это). Я не знаю, как реплицировать объект <% Reference ...> из класса App_Code. Кто-нибудь знает, как я могу ссылаться (и, таким образом, приводить) мой ascx из класса App_Code? Спасибо.

1 Ответ

6 голосов
/ 04 марта 2011

App_Code компилируется в отдельную сборку, которая не может ссылаться на типы в CodeFile.

Но вы можете добавить интерфейс / базовый класс в вашу папку App_Code, которая определяет настраиваемые свойства и методы, которые вы намерены реализовать в вашем usercontrol:

public class EnquiryCaptureBase : System.Web.UI.UserControl
{
    public object CustomProperty { get; set; }
}

, а затем

public partial class EnquiryCapture : EnquiryCaptureBase
{

}

и, наконец, где-то в App_Code:

pc = LoadControl("enquirycapture.ascx");
((EnquiryCaptureBase)pc).CustomProperty = customObject;
...