簡體   English   中英

如何使母版頁在每個頁面的標簽上顯示一個值

[英]How to make Master Page to display a value on its label on each page

我正在為我們的網站設計一個更改請求(CR)模塊,該模塊允許用戶提出CR並將其提交以供審核。 提高CR后會立即生成工作流程,因此用戶必須通過對其活動進行投票來提交它(說活動為“ Submit to CCB”)。 然后,我設置標簽的值,該標簽的值作為“正在審閱”添加到母版頁中,現在我可以看到標簽值,並立即導航到下一個活動(下一頁)。 但是我在下一頁看不到標簽的值。 由於我剛開始實施母版頁概念,因此無法找出原因。

WFLCRMaster.master

<%@ Master Language="C#" AutoEventWireup="true" CodeFile="WFLCR.master.cs" Inherits="MasterPage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="masterFormMIF" runat="server">
  <div id="WorkflowStatus">
   <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager> 
              <asp:UpdatePanel ID="UserUpdatePanel" runat="server">
                  <ContentTemplate>
                  <asp:Label ID="WorkflowSignoffStatus" runat ="server">            </asp:Label>
                  </ContentTemplate>
              </asp:UpdatePanel>
          </div>
          <div>
           <asp:ContentPlaceHolder id="ContentPlaceHolderMIF" runat="server">
           </asp:ContentPlaceHolder>
         </div>
    </form>
  </body>

我在WFLCR.master.cs中創建了一個屬性,並將<%@ MasterType VirtualPath="~/WFLCR.master" %>到所有頁面。

public string CRStatus
    {
        set { WorkflowSignoffStatus.Text = value; }
        get { return WorkflowSignoffStatus.Text; }
    }

這是我的Preliminary.aspx.cs

public partial class Preliminary : System.Web.UI.Page
public string WFLCRStatus
    {
        get
        {   object value = HttpContext.Current.Session["CRStatus"];
            return value == null ? "" : (string)value;
        }
        set
        { HttpContext.Current.Session["CRStatus"] = value;
        }
    } 
   protected void BtnToCCB_Click(object sender, EventArgs e)
   {
        WFLCRStatus = "In Review";
        Master.CRStatus = "In Review";
        Response.Redirect("CCB.aspx");
   }
}

將值設置為標簽,但是在導航到下一頁時,標簽為空。

我計划在master.cs的Form_Load事件中使用它來顯示狀態的計划中在此處創建了一個屬性。 但是我不知道該怎么用。 無法在此處創建實例以訪問此屬性。

設置標簽值后調用重定向是沒有意義的。

Master.CRStatus = "In Review";
Response.Redirect("CCB.aspx");

重定向時,框架將HTTP重定向發送到客戶端瀏覽器,並且當前的請求/響應周期結束,並且一個全新的請求/響應周期開始。 這意味着將重新加載整個頁面生命周期,包括母版頁面。

為此,請更新您的Session,執行重定向,然后在下一頁的Page_Load中檢查Session以查看該值是否存在,並相應地更新標簽。

WFLCRStatus.Status = "In Review"
Response.Redirect("CCB.aspx");

下一頁

protected void Page_Load(object sender, EventArgs e)
{
    if(!IsPostBack)
    {
        if(!String.IsNullOrEmpty(Session["CRStatus"]))
        {
            Master.CRStatus = Session["CRStatus"].ToString();
        }
    }
}

嘗試將默認值設置為WorkflowSignoffStatus然后檢查控件是否在BtnToCCB_Click上返回正確的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM