Вопрос о ASP.NET
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Добрый день, господа завсегдатаи форума.
Столкнулся с проблемой при использовании динамического добавления User control.
Для иницилизации контролла испльзовался конструктор, в котором задавались поля контроллов входящих в состав объекта. Во время выполнения получаю исключение Object reference not set to an instance of an object.
Те же самые действия приводят к исключению если привязать заполнение полей к событию PageLoad, однако в случае жесткого задания контролла в файле.aspx все проходит удачно.
Default.aspx:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Blog._Default" %>
<%@ Register src="Node.ascx" tagname="Node" tagprefix="sq" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Node.ascx:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Node.ascx.cs" Inherits="Blog.Node" %>
<div class = "Node">
<asp:Label ID="Head" runat="server"></asp:Label>
<asp:Label ID="Body" runat="server"></asp:Label>
<asp:Label ID="Date" runat="server"></asp:Label>
</div>
Default.aspx.cs:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace Blog
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Node post = new Node("Head", "BODY", DateTime.Now);
Page.Controls.Add(post);
}
}
}
Node.ascx.cs:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace Blog
{
public partial class Node : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public Node(string head, string body, DateTime date)
{
Head.Text = head;
Body.Text = body;
Date.Text = date.ToLongDateString();
}
public Node()
{
Head.Text = "head";
Body.Text = "body";
Date.Text = DateTime.Now.ToLongDateString();
}
}
}
Собсетвенно вопрос, о котором упоминалось в названии темы: В чем ошибка?:)
Полдня курения мануалов результата не дало, посему выкладываю сюда.
Насколько я понял дело в моем неправильном понимании событийной модели либо последовательности иницилизации компонентов.
Заранее извиняюсь если посты подобного рода нежелательны на этом форуме, отпишитесь если это так.
18 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів