簡體   English   中英

從母版頁后面的代碼訪問變量

[英]Accessing variable from code behind Master Page

請看下圖

在此處輸入圖片說明

如您所見,我有一個母版頁Design.master及其背后的代碼Design.master.cs

我只是想讓我的頁面在用戶未登錄時重定向到dashboard.aspx ,但是無論我嘗試什么,都無法做到這一點。

我希望能夠訪問后面代碼中設置的公共變量redirect的值,並從Design.master代碼中訪問它。

這樣我就可以檢查變量並將Response.redirect()代碼放入Design.master頁面中。

除非您知道如何從Design.master.cs代碼獲取重定向才能工作?

請幫助:(這讓我瘋狂!

更新圖片

阿達斯

Design.master代碼:

<%@ Master Language="C#" CodeBehind="~/Design.master.cs" AutoEventWireup="true" %>

<%

        Response.Redirect("default.aspx", true);

%>

<!DOCTYPE html>

<html>

<head>
    <title>Portal</title>
    <link rel="stylesheet" href="styles.css" type="text/css" />

    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
    <script src="portal_script.js" type="text/javascript"></script>
</head>
<body>

<div id="main_wrapper">

        <div id="header_top_wrapper">
            <div id="header_top">
                <img src="images/design/logo_small.png" id="logo_top" />

                <a href="basket.aspx">
                    <div id="basket_top_link">
                        <div>Order Basket</div>
                    </div>
                </a>
            </div>
        </div>
        <div id="header_breadcrumb_wrapper">
            <div id="header_breadcrumb"></div>
        </div>

        <div id="content_wrapper">
            <div id="content">

                <div id="side_menu">

                    <div id="customer_info">

                        <asp:ContentPlaceHolder id="CustomerInfo" runat="server">

                        </asp:ContentPlaceHolder>

                    </div>

                    <a href="dashboard.aspx"><div class="side_menu_item">
                        <div class="item_title">View Orders</div>
                        <div class="item_description">View your outstanding orders</div>
                    </div></a>

                    <a href="search.aspx"><div class="side_menu_item">
                        <div class="item_title">Product Search</div>
                        <div class="item_description">Search products and view stock levels</div>
                    </div></a>

                    <a href="search.aspx"><div class="side_menu_item">
                        <div class="item_title">Outstanding Complaints</div>
                        <div class="item_description">View status of complaints</div>
                    </div></a>

                </div>

                <div id="content_left">

                    <asp:ContentPlaceHolder id="Content" runat="server">

                    </asp:ContentPlaceHolder>

                </div>

            </div>
        </div>

        <div id="footer_wrapper">

            <div id="footer"><p></p></div>

        </div>

</div>

</body>
</html>

Design.master.cs代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Design : System.Web.UI.MasterPage
{

    public bool redirect = false;

    protected override void OnInit(EventArgs e)
    {

        // Get the users session
        SessionManager session = new SessionManager(HttpContext.Current);

        // I've tried it here, and it won't redirect
        // Response.Redirect("default.aspx");

        redirect = true;

    }

    protected void Page_Load(object sender, EventArgs e)
    {
        // I've tried it here, and it won't redirect
        // Response.Redirect("default.aspx");
    }
}

只需在Design.master.csPage_Load方法中執行此Design.master.cs

protected void Page_Load(object sender, EventArgs e){
   if (result){
      Response.Redirect("....");
   }
}

這比在標記文件中破壞代碼要整潔得多,而且這種技術只會在將來給您帶來麻煩。

默認情況下, AutoEventWireUp設置為false。 查看您的聲明,這就是為什么母版頁方法未連接的原因。 將聲明更改為

<%@ Master Language="C#" AutoEventWireup="true"

然后,您可以添加類似

protected override void OnInit(EventArgs e)
        {
            if(!loggedIn)
                 Response.Redirect("login.aspx", false);
          //...
        }

為您的實際代碼使用:

Response.Redirect("Page.aspx",True);

重定向中包含true時通常可以解決那些晦澀的情況,否則它將無法正常工作。

暫無
暫無

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

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