コンテンツ ページではデータを操作できるため、そのコードにはエラー処理ブロックが含まれています。私がやりたいことは、ユーザーにエラー メッセージを表示するために、マスター ページのモーダル ウィンドウでいくつかのラベルのテキスト値を設定することです。
<!-- 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 ディレクティブがありませんか?またはアセンブリ参照?)