Деплой ascx
От: nickstaves Украина  
Дата: 21.10.11 08:03
Оценка:
Доброе!

Есть проблема с сабжем.
Разработал значит я сложный ascx, в котором в частности в ascx части нахолятся контролы:
...
<asp:UpdatePanel ID="m_UpdatePanel" runat="server">
    <ContentTemplate>
        <asp:Panel id="m_pnlMainView" runat="server">
        ....
        </asp:Panel>
        <asp:Panel id="m_pnlErrorView" runat="server">You are not authorized to view this content. Please contact system administrator.</asp:Panel>
    </ContentTemplate>
</asp:UpdatePanel>

В ascx.cs:
        protected void Page_Load(object sender, EventArgs e)
        {
            if (CheckAccess())
            {
                m_pnlErrorView.Visible = false;
                m_pnlMainView.Visible = true;
                ....
            }
         }

Все пишу в 2010 студии. Протестировал, все работает как надо. Паблишу его в отдельные DLL, подключаю эти DLL в тестовый сайт, делаю референс
<%@ Register assembly="App_Web_swfcourse.ascx.cdcab7d2" namespace="MyNamespace" tagprefix="uc1" %>
потом ложу контрол на форму
<body>
    <form id="form1" runat="server">
    <div>
        <uc1:MyControl runat="server" />
    
    </div>
    </form>
</body>

Запускаю и получаю System.NullReferenceException: Object reference not set to an instance of an object. at MyNamespace.MyControl.Page_Load(Object sender, EventArgs e)
После добавления трейсов выясняется, что CheckAccess() в коде отрабатывает нормально а вот панелька m_pnlErrorView есть NULL. Вопрос — почему?
Делал все в соответствии с
http://msdn.microsoft.com/en-us/library/aa479318.aspx

Но явно либо чего-то недоделал либо чего-то недопонимаю.

С уважением,
nickstaves
Re: Деплой ascx
От: Gollum Россия  
Дата: 23.10.11 23:25
Оценка: 1 (1)
Здравствуйте, nickstaves, Вы писали:

N>Но явно либо чего-то недоделал либо чего-то недопонимаю.


Вы написали user control. User control используется путем копирования, и регистрируется директивой
<%@ Register TagPrefix="myControls" TagName="MyControl" Src="Controls/MyControl.ascx" %>
используется потом так:
<myControls:MyControl id="id" runat="server" />

Есть способ заставить контрол скомпилироваться в dll и использовать подобно custom control'у, но с ним очень много сложностей, и он не стоит затраченных усилий.
... << RSDN@Home 1.2.0 alpha 5 rev. 1536>>
Eugene Agafonov on the .NET

Re[2]: Деплой ascx
От: nickstaves Украина  
Дата: 24.10.11 09:10
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Есть способ заставить контрол скомпилироваться в dll и использовать подобно custom control'у, но с ним очень много сложностей, и он не стоит затраченных усилий.


Благодарю,

но все же в качестве, так сказать, повышения образованности, может направите куда читать про компилирование юзер контролов в dll.

С уважением,
nickstaves
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.