-2

请看下面的图片

在此处输入图像描述

如您所见,我有一个母版页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");
    }
}
4

3 回答 3

2

只需在您的Page_Load方法中执行以下操作Design.master.cs

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

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

于 2012-08-16T15:17:03.423 回答
1

AutoEventWireUp默认设置为 false。查看您的声明,这就是为什么母版页方法没有连接的原因。将声明更改为

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

然后你可以添加类似的东西

protected override void OnInit(EventArgs e)
        {
            if(!loggedIn)
                 Response.Redirect("login.aspx", false);
          //...
        }
于 2012-08-16T15:31:23.633 回答
0

对于您的实际代码使用:

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

在重定向中使用 true 通常会修复那些原本不起作用的晦涩时间。

于 2012-08-16T15:34:19.057 回答