Как сделать так, чтобы главная страница отображала значение на своем ярлыке на каждой странице
Я разрабатываю модуль запроса на изменение (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
,