"개체 참조가 개체 인스턴스로 설정되지 않았습니다."오류가 발생합니다. 약자의 이익을 위해 단축 모든 것을 내려 :사용자 정의 컨트롤에서 웹 컨트롤에 사용자 컨트롤의 생성자에서 액세스
의 .ascx 파일 :
는<asp:Label ID="lblcategory" runat="server" Text="Label"></asp:Label>
.ascx.cs 파일 : 다음
public partial class NewsArticleContainer : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
public NewsArticleContainer()
{
lblcategory.Text = "hello there!"; //null reference exception
}
}
, 내가 이러는거야 web.config 파일에 등록한 후 다른 페이지로 사용자 제어.
에서 .aspx 파일 :
<MyUC:NewsArticleContainer runat="server"/>
내가를 Page_Load에서 lblcategory.Text = "hello there!"
줄을 추가하고 생성자에서 그것을 언급하는 경우, 그것은 잘 작동합니다. 그러나 나중에이 사용자 정의 컨트롤의 인스턴스를 프로그래밍 방식으로 추가 할 수 있습니다 (예 : mypanel.Controls.Add(new NewsArticleContainer(x))
, 여기서 x는 NewsArticle 임).
저는 사용자 정의 컨트롤을 사용하기 위해 LoadControl을 사용해야한다는 것을 이미 알고 있습니다. 그게 문제가 아닙니다. 문제는 사용자 정의 컨트롤의 생성자에서 웹 컨트롤에 액세스 할 수 없다는 것입니다.
이 글을 쓰는 동안 나는 단지 : 사용자 정의 컨트롤의 경우 Page_Load가 클래스의 인스턴스를 만드는 전통적인 의미의 생성자와 같을 수 있으며 전통적인 생성자 UserControl의 공용 ClassName()을 건드리지 않거나 수정해서는 안됩니까?
먼저 멤버 변수에 값을 저장 한 다음로드시 label.text에 멤버 변수를 할당 해 보았습니까? –