请参阅下面的图片
正如您所看到的,我有一个母版页Design.master
及其背后的代码Design.master.cs
。
当用户没有登录时,我只是想让我的页面重定向到dashboard.aspx
,但无论我尝试什么,我都无法做到。
我希望能够访问公共变量redirect
的值,该值在后面的代码中设置并从Design.master
代码访问它。
这样我就可以检查变量并将Response.redirect()
代码放在Design.master
页面中。
除非您知道如何使用Design.master.cs
代码让重定向工作?
请帮助:(它正在驱使我INSANE!
更新图片
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");
}
}
答案 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通常可以修复那些不起作用的时间。