Как сделать так, чтобы главная страница отображала значение на своем ярлыке на каждой странице

Я разрабатываю модуль запроса на изменение (CR) для нашего веб-сайта, который позволяет пользователям поднять CR и представить его на рассмотрение. Рабочий процесс генерируется сразу после поднятия CR, поэтому пользователь должен отправить его, проголосовав за свою активность (скажем, активность как "Отправить в 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; }
    }

Вот мой Предварительный.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 событие для отображения статуса. Но я не знаю, как использовать это там. Не удалось создать экземпляр для доступа к этому свойству.

2 ответа

Решение

Вызов перенаправления после установки значения метки не имеет смысла.

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

Когда вы перенаправляете, платформа отправляет HTTP-перенаправление в браузер клиента, и текущий цикл запроса / ответа заканчивается, и начинается совершенно новый. Это означает, что весь жизненный цикл страницы загружается снова, включая главную страницу.

Для этого обновите сеанс, выполните перенаправление, затем в Page_Load на следующей странице проверьте сеанс, чтобы увидеть, есть ли это значение, и обновите метку соответствующим образом.

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,

Другие вопросы по тегам