Tôi gặp sự cố khi sử dụng LoadControl(type, Params)
. Hãy để tôi giải thích ...Asp.net Usercontrol LoadControl Issue
Tôi có một điều khiển người dùng siêu đơn giản (ascx)
<%@ Control Language="C#" AutoEventWireup="True" Inherits="ErrorDisplay" Codebehind="ErrorDisplay.ascx.cs" EnableViewState="false" %>
<asp:Label runat="server" ID="lblTitle" />
<asp:Label runat="server" ID="lblDescription" />
với mã (C#) đằng sau của:
public partial class ErrorDisplay : System.Web.UI.UserControl
{
private Message _ErrorMessage;
public ErrorDisplay()
{
}
public ErrorDisplay(Message ErrorMessage)
{
_ErrorMessage = ErrorMessage;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (_ErrorMessage != null)
{
lblTitle.Text = _ErrorMessage.Message;
lblDescription.Text = _ErrorMessage.Description;
}
}
}
Ở những nơi khác trong ứng dụng web của tôi Tôi thêm một ví dụ về điều khiển người dùng tới trang bằng cách sử dụng mã sau:
divValidationIssues.Controls.Add(LoadControl(typeof(ErrorDisplay), new object[] { MessageDetails }));
Tôi đang sử dụng phiên bản quá tải LoadControl vì tôi muốn chuyển thông số Message tới hàm tạo. Tất cả điều này xuất hiện để hoạt động ok.
Tuy nhiên, khi OnPreRender()
được kích hoạt trên người dùng ErrorDisplay, việc kiểm soát biến lblTitle và lblDescription là cả hai null
, mặc dù chúng có tương đương đánh dấu. Biến tin nhắn đã được điền chính xác.
Có ai có thể tiết lộ bất kỳ ánh sáng nào về lý do điều này có thể xảy ra không?
Cảm ơn
EDIT:
Chỉ cần cho rõ ràng tôi cũng sẽ thêm rằng mã được programatically thêm usercontrol trang đang chạy để đáp ứng với một nút bấm, do đó 'lưu trữ trang 'đã tiến triển qua Init, Page_Load và hiện đang xử lý các trình xử lý sự kiện.
Tôi không thể thêm các liên kết người dùng ở giai đoạn vòng đời asp trước đó khi chúng được tạo ra để phản hồi sự kiện nhấp nút.
+1 và lời cảm ơn từ tôi về việc giải quyết vấn đề tôi đang gặp phải. :) –
Theo dõi tuyệt vời! –