Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从代码隐藏母版页访问变量_C#_Asp.net_Variables_Master Pages_Public - Fatal编程技术网

C# 从代码隐藏母版页访问变量

C# 从代码隐藏母版页访问变量,c#,asp.net,variables,master-pages,public,C#,Asp.net,Variables,Master Pages,Public,请参见下图 如您所见,我有一个母版页Design.master,它后面的代码称为Design.master.cs 我只是想让我的页面在用户未登录时重定向到dashboard.aspx,但无论我怎么做,我都无法让它这样做 我希望能够访问公共变量redirect,该变量在代码隐藏中设置,并从Design.master代码访问它 这样我就可以检查变量并将Response.redirect()代码放入Design.master页面 除非您知道如何从Design.master.cs代码中重定向到工作状态

请参见下图

如您所见,我有一个母版页
Design.master
,它后面的代码称为
Design.master.cs

我只是想让我的页面在用户未登录时重定向到
dashboard.aspx
,但无论我怎么做,我都无法让它这样做

我希望能够访问公共变量
redirect
,该变量在代码隐藏中设置,并从
Design.master
代码访问它

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

除非您知道如何从
Design.master.cs
代码中重定向到工作状态

请帮帮我:(它快把我逼疯了

更新图像

Design.master
code:

<%@ 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
中的
页面加载方法中执行即可:

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

这比在标记文件中使用代码中断要简洁得多,而且这种技术在将来只会对您造成不利影响。

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


对于您的实际代码使用:

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

在重定向中加入true通常会修复那些不太清楚的时候,否则它就不起作用。

感谢您的回复。我尝试了这个方法,页面根本没有重定向。它会继续加载我不希望用户访问的页面。这非常令人费解……就好像它没有加载响应一样。redirect()@Coulton我会假设
结果
只是返回
。你在哪里将其设置为真?我在你的截图中没有看到与此相关的内容。你试过调试它吗?值是什么?函数被调用了吗?@Remy我已经完全去掉了
LoggedIn
逻辑,我只是想得到re直接工作,而不仅仅是在
Design.master.cs
代码中放置它自己的时候。@Coulton您可以将它放在母版页中。下面是页面生命周期事件的顺序列表,这应该有助于您确定您的代码能够识别用户何时登录或不登录?如果是,那么Curt的答案会起作用,如果不是,可能是您的问题在于确定用户是否登录。您正在尝试使用母版页中的代码从
dashboard.aspx
重定向到
default.aspx
。问题:您的
dashboard.aspx
是否使用母版页开始?请发布
dashboard.aspx
中的页面声明以及(因为我回答了你之前的一个问题)你是否尝试将逻辑置于Global.asax?我想请查看我尝试将
重定向
的所有位置。我现在已将
AutoEventWireup
按建议设置为true。即使我将
Response.Redirect(“default.aspx”,true)设置为true
to
Design.master
中没有任何
LoggedIn
逻辑,当我加载页面时它仍然不会重定向。@库尔顿-添加一个断点以确保断点被命中。其次,检查断点只命中一次,没有无限的重定向循环。
protected override void OnInit(EventArgs e)
        {
            if(!loggedIn)
                 Response.Redirect("login.aspx", false);
          //...
        }
Response.Redirect("Page.aspx",True);