【发布时间】:2012-12-25 00:37:38
【问题描述】:
我有一个已添加到 web.config 中的 UserControl
<add tagPrefix="BCF" src="~/controls/MyMessageBox.ascx" tagName="error"/>
并添加到我的母版页
<BCF:error ID="BCError" runat="server" Visible="false" />
现在我需要能够从使用该母版页的所有子页面中引用此控件及其公共属性。我这样做是我的 BasePage OnLoad 事件
public UserControl BCError;
BCError = (UserControl)Master.FindControl("BCError");
问题是,虽然我可以在 .aspx 页面中做到这一点
BCError.Visible = true;
我无法引用我放入的任何控件属性?比如 ShowError .. 如果我这样做了
BCError.ShowError = "Error Message";
我只是收到一个错误提示
“System.Web.UI.UserControl”不包含“ShowInfo”的定义,也没有扩展方法“ShowInfo”
请您指出正确的方向!
这是用户控件的代码...我可以在后面的母版页代码中使用属性(如果我将控件直接放入其中,则可以在页面中使用)但不能在后面的子页面代码中使用它们?它甚至没有显示智能感知中的属性或包装方法?
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;
public partial class MyMessageBox : System.Web.UI.UserControl
{
#region Properties
public bool ShowCloseButton { get; set; }
#endregion
#region Load
protected void Page_Load(object sender, EventArgs e)
{
if (ShowCloseButton)
CloseButton.Attributes.Add("onclick", "document.getElementById('" + MessageBox.ClientID + "').style.display = 'none'");
}
#endregion
#region Wrapper methods
public void ShowError(string message)
{
Show(MessageType.Error, message);
}
public void ShowInfo(string message)
{
Show(MessageType.Info, message);
}
public void ShowSuccess(string message)
{
Show(MessageType.Success, message);
}
public void ShowWarning(string message)
{
Show(MessageType.Warning, message);
}
#endregion
#region Show control
public void Show(MessageType messageType, string message)
{
CloseButton.Visible = ShowCloseButton;
litMessage.Text = message;
MessageBox.CssClass = messageType.ToString().ToLower();
this.Visible = true;
}
#endregion
#region Enum
public enum MessageType
{
Error = 1,
Info = 2,
Success = 3,
Warning = 4
}
#endregion
}
【问题讨论】:
标签: user-controls master-pages