-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 に答える