我的内容页面允许我操作数据,因此它们的代码包含错误处理块。我想做的是在母版页的模式窗口中设置几个标签的文本值,以便向用户显示错误消息:
<!-- master page -->
<div runat="server" id="divModalBg" class="modalbg"> </div>
<div runat="server" id="divErrorModal" class="modal">
<asp:Label runat="server" id="lblErrorTitle"></asp:Label>
<asp:Label runat="server" id="lblErrorMessage"></asp:Label>
<asp:Button runat="server" id="btnRetry" text="Retry" />
</div>
我不确定如何在我的内容页面中设置这些标签的值...
// Users.aspx.cs
protected void btnUpdate_Click(object sender, EventArgs e)
{
try
{
// do some stuff
}
catch(Exception ex)
{
// lblErrorTitle = "Update User";
// lblErrorMessage = String.Format("Error actioning request: [ {0} ]", ex.Message);
// btnRetry just closes the modal (sets visible to false) so that
// the user can try again
}
}
那么如何访问母版页上的控件以便执行此操作?
我正在考虑母版页上的属性,将它们设置为 onPageLoad...
编辑
根据mason
下面的回答,我已经这样做了......
// Default.master
// properties for error handling
public virtual Label ErrorTitle { get { return lblErrorAction; } }
public virtual Label ErrorMessage { get { return lblErrorMessage; } }
public virtual Panel ErrorBG { get { return pnlErrorBackground; } }
public virtual Panel ErrorModal { get { return pnlErrorModal; } }
这是我的指令:
<%@ MasterType VirtualPath="~/Default.master" %>
这是我的代码文件
// Users.aspx.cs
private void deleteUser(int userid)
{
ImajUser u = new ImajUser(userid, true);
try
{
u.Delete();
lblerr.Text = "User was deleted successfully.";
lblerr.ForeColor = System.Drawing.Color.Green;
}
catch (Exception ex)
{
Page.Master.ErrorTitle.Text = "Delete User";
Page.Master.ErrorMessage.Text = String.Format("Error actioning request: [ {0} ]", ex.Message);
Page.Master.ErrorBG.Visible = true;
Page.Master.ErrorModal.Visible = true;
}
现在,这些控件中的每一个都出现以下错误:
“System.Web.UI.MasterPage”不包含“ErrorTitle”的定义,并且找不到接受“System.Web.UI.MasterPage”类型的第一个参数的扩展方法“ErrorTitle”(您是否缺少 using 指令还是汇编参考?)