从Master Page后面的代码访问变量

时间:2012-08-16 15:15:15

标签: c# asp.net variables master-pages public

请参阅下面的图片

enter image description here

正如您所看到的,我有一个母版页Design.master及其背后的代码Design.master.cs

当用户没有登录时,我只是想让我的页面重定向到dashboard.aspx,但无论我尝试什么,我都无法做到。

我希望能够访问公共变量redirect的值,该值在后面的代码中设置并从Design.master代码访问它。

这样我就可以检查变量并将Response.redirect()代码放在Design.master页面中。

除非您知道如何使用Design.master.cs代码让重定向工作?

请帮助:(它正在驱使我INSANE!

更新图片

adas

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");
    }
}

3 个答案:

答案 0 :(得分:2)

只需使用Page_Load中的Design.master.cs方法执行此操作:

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

这比标记文件中的代码中断要简洁得多,而且这种技术将来只会让你感到厌烦。

答案 1 :(得分:1)

默认情况下,

AutoEventWireUp设置为false。查看您的声明,这就是主页方法没有连线的原因。将声明更改为

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

然后你可以添加像

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

答案 2 :(得分:0)

对于您的实际代码使用:

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

在重定向中使用true通常可以修复那些不起作用的时间。