В конечном итоге я пытаюсь создать элемент управления, который позволит моим пользователям указывать, в каком порядке их поля будут отображаться на странице. Поэтому я создаю собственный элемент управления формой, чтобы решить его.
У меня проблема с тем, что мои веб-элементы управления не инициализируются при загрузке из сборки. У меня есть следующий код:
FieldOrder.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="FieldOrder.ascx.cs" Inherits="Sologic.Website.Admin.Controls.FieldOrder" %>
<asp:ListBox ID="fieldList" runat="server" />
* 1010 FieldOrder.ascx.cs *:
public partial class FieldOrder : FormEngineUserControl
{
public override object Value
{
get
{
return "1";
}
set
{
}
}
protected void Page_Load(object sender, EventArgs e)
{
var className = DocumentManager.Node.ClassName;
if (String.IsNullOrEmpty(className))
className = DocumentManager.NewNodeClassName;
ClassStructureInfo.GetColumns(className).ForEach(cn => fieldList.Items.Add(cn));
}
}
Все это собирается в сборку, которая затем помещается в папку / папку Kentico. Наконец я зарегистрировал его в Kentico: ![form control editor](https://i.stack.imgur.com/dCpyg.png)
К сожалению, я получаю:
[NullReferenceException: Object reference not set to an instance of an object.]
Sologic.Website.Admin.Controls.FieldOrder.Page_Load(Object sender, EventArgs e) +115
System.Web.UI.Control.OnLoad(EventArgs e) +102
CMS.Base.Web.UI.AbstractUserControl.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +67
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Control.LoadRecursive() +161
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1380
Когда я присоединяюсь к процессу w3wp, я вижу, что мой элемент управления равен нулю. Когда я запускаю этот же элемент управления в обычном сценарии веб-приложения, он не равен нулю. Когда я запускаю этот код в качестве пользовательского веб-элемента управления, кажется, он работает нормально. Есть ли какой-нибудь код инициализации, который нужно запустить при загрузке элементов управления через DLL?