日期:2014-05-18  浏览次数:20398 次

Server.Transfer 出错了
a.aspx的C#代码

public string Name;

private void Button1_Click(object sender, System.EventArgs e)
{
  Name = "afd";
  Server.Transfer("b.aspx");
}

b.aspx中C#代码
private void Page_Load(object sender, EventArgs e)
{
  a newWeb;  
  newWeb = (a)Context.Handler;
  string name;
  name = newWeb.Name;
}

出现如下的错误:
无法将类型为“ASP.q_aspx”的对象强制转换为类型“b”

------解决方案--------------------
会有这样的问题?
学习学习
------解决方案--------------------
Server.Transfer("~/b.aspx"); 
这样试试,b.aspx在根目录吗
------解决方案--------------------
看看 Response.Redirect 会不会出错先。。
------解决方案--------------------
这个..貌似只有从a.aspx跳到b.aspx才不会错吧,从其他位置跳到a.aspx必然报错。
newWeb = (a)Context.Handler; 
改成 newWeb = Context.Handler as a;
再判断newWeb == null 会好一些吧 

------解决方案--------------------
在aspx 用《%%》把你的父页面引入@
------解决方案--------------------
改用Response.Redirect("xx.aspx");
------解决方案--------------------
Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了 
1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活; 
2. Server.Transfer可以将页面参数方便传递到指定页面; 
3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果; 
4. Server.Transfer可以减少客户端对服务器的请求;
------解决方案--------------------
感觉你的代码没问题,是不是别的地方出问题了
------解决方案--------------------
Response是叫浏览器去重新转向到指定的网页,而Server自然是发生在服务器端为主了
1. Server.Transfer只能够转跳到本地虚拟目录指定的页面,而Response.Redirect则十分灵活;
2. Server.Transfer可以将页面参数方便传递到指定页面;
3. 使用时,Server.Transfer跳到别的页面后,浏览器显示的地址不会改变,有时反而会造成误会,当然也有些场合需要这样的效果;
4. Server.Transfer可以减少客户端对服务器的请求;
------解决方案--------------------
asp.net 2.0 中不能用这样的方法进行传值

应该这么写
a.aspx
  
public string Name; 

private void Button1_Click(object sender, System.EventArgs e) 

Name = "afd"; 
Server.Transfer("b.aspx"); 


b.aspx中C#代码 
private void Page_Load(object sender, EventArgs e) 

a test = (a)PreviousPage;
string name = test.Name;

并且 还要在 b.aspx 的页面中添加 <%@ Reference VirtualPath="~/a.aspx" %> 

这样就能把a 页面的属性值 传到 b 页面了