ASP.NET(C#) 使用Server.Execute()后不能跳转页面

有一个登陆页面login.aspx,一个主页面main.aspx为了防止用户直接键入main.aspx,加入了一个judge.aspx进行页面判断!login.aspx:... 有一个登陆页面login.aspx,一个主页面main.aspx
为了防止用户直接键入main.aspx,加入了一个judge.aspx进行页面判断!

login.aspx:
在登录按钮单击事件里:
Session["enter"] = "Student";
Server.Transfer("main.aspx");

judge.aspx:
protected void Page_Load(object sender, EventArgs e)
{
//如果是用户直接键入,返回登陆页面
if ((String)Session["enter"] != "Student")
{
Server.Transfer("login.aspx");
}
}

main.aspx:
protected void Page_Load(object sender, EventArgs e)
{

if (!this.IsPostBack)
{
Server.Execute("judge.aspx",false);先执行judge.aspx进行判断
}

}

//超链接按钮单击事件
protected void LinkButton1_Click(object sender, EventArgs e)
{
Server.Transfer("login.aspx");
}

问题:
正常登陆后跳转到main.aspx后,超连接按钮不起作用了,原因是一开始执行了Server.Execute("judge.aspx",false);
怎么解决?
展开
 我来答
匿名用户
2013-08-08
展开全部
用其他的跳转方式可以就吗!c#.net网页跳转七种方法 1.Response.Redirect(" http://www.bcbbs.net",false);
目标页面和原页面可以在2个服务器上,可输入网址或相对路径。后面的bool值为是否停止执行当前页。
跳转向新的页面,原窗口被代替。"
浏览器中的URL为新路径。
:Response.Redirect方法导致浏览器链接到一个指定的URL。当Response.Redirect()方法被调用时,它会创建一个应答,应答头中指出了
状态代码302(表示目标已经改变)以及新的目标URL。浏览器从服务器收到该应答,利用应答头中的信息发出一个对新URL的请求。这就是说,
使用Response.Redirect方法时重定向操作发生在客户端,总共涉及到两次与服务器的通信(两个来回):第一次是对原始页面的请求,
得到一个302应答,第二次是请求302应答中声明的新页面,得到重定向之后的页面。
2.Server.Transfer("Default2.aspx?name=zhangsan",true);
目标页面和原页面可以在同一个服务器上。
跳转向新的页面,原窗口被代替。
波球论坛 浏览器中的URL为原路径不变。
默认情况下,Server.Transfer方法不会把表单数据或查询字符串从一个页面传递到另一个页面,但只要把该方法的第二个参数设置成
Tb310True,就可以保留第一个页面的表单数据和查询字符串。
同时,使用Server.Transfer时应注意一点:目标页面将使用原始页面创建的应答流,这导致ASP.NET的机器验证检查b310,,博球,博球网,行家心水,赛事推荐,赛事分析,资料库,足球赛事,篮球,NBA,赔率,比分,篮球数据,足球数据. n) U7 P/ J2 m- ?% r
(Machine Authentication Check,MAC)认为新页面的ViewState已被篡改。因此,如果要保留原始页面的表单数据和查询字符串集合,
必须把目标页面Page指令的EnableViewStateMac属性设置成False。 3.Server.Execute("Default5.aspx?address=beijing);
目标页面和原页面可以在同一个服务器上。
跳转向新的页面,再跳转会原页面。
浏览器中的URL为原路径不变。
当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
这种页面导航方式类似于针对ASPX页面的一次函数调用,被调用的页面能够访问发出调用页面的表单数据和查询字符串集合,所以要把( |1 C# m; J% V
被调用页面Page指令的EnableViewStateMac属性设置成False。 4.Response.Write("<script language='javascript'>window.open('aaa.aspx');</script>");_
目标页面和原页面可以在2个服务器上,可输入网址或相对路径。
原窗口保留,另外新增一个新页面。
5.Response.Write("<script language='javascript'>window.location='Default2.aspx'</script>");b310波球论坛$ r/ v9 t; x6 H4 A" O3 J- n* ?: D& e
打开新的页面,原窗口被代替。
6.Response.Write("<script>window.showModalDialog('Default2.aspx')</script>");
7.Response.Write("<script>window.showModelessDialog('Default2.aspx')</script>");
(一)、showModalDialog和showModelessDialog有什么不同?
 showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。b310,,博球,博球网,行家心水,赛事推荐,赛事分析,资料库,足球赛事,篮球,NBA,赔率,比分,篮球数据,足球数据1 x/ b# F9 ]; u2 Z, ~
  showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P) (二)、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
 在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的
匿名用户
2013-08-08
展开全部
其实逻辑不用这么复杂 跳转页面传值 直接用url传值 然后呢 在main页面 在pagelode里获取 如果获取不到直接跳转到login页面 或者提示页面 让他去登陆 在一个网站中如果很多页面要用到用户名 而且这个网站还是个大网站 用户很多 是不会用session的 这样很耗服务器内存 影响网页打开性能 一般用url传值 一般的逻辑 是正确判断用户在数据库存在后 直接跳转页面 顺便传过去所需要的值 注意不能传密码等敏感信息 然后呢 会根据相应的用户名加载相应的模块 就比如登陆QQ空间;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-08
展开全部
为什么在做一个judge.aspx?完全没有必要啊,在main.aspx里面直接判断不就OK了?main.aspx:
protected void Page_Load(object sender, EventArgs e)
{
if ((String)Session["enter"] != "Student")
{
Response.Redirect("login.aspx");
}
} 如果你非要用你这个方法,你可以用Response.Redirect的跳转,把main.aspx里的判断不要放在IsPostBack里,我相信就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-08
展开全部
在main.aspx.cs文件中超链接的事件里面,做清空session内容的操作。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-08-08
展开全部
你用Response.Rediredt("main.aspx");试试呢。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式