积极答复者
Server.Transfer() 方法 应用问题 。

问题
-
代码如下:
public partial class Web_RegularDocMag_CreateDocument : System.Web.UI.Page
{
private string Doctype
{
get
{
return this.DDlDocType.SelectedValue;
}
}public string isCheck
{
get
{
return this.hidisEdit.Value;
}
}public string DocPath
{
get
{
return this.hidDocPath.Value;
}
}
public string DocExpandName
{
get
{
return this.hidDoctype.Value;
}
}public string isNew
{
get
{
return this.hidisEdit.Value;
}
}
public void Page_Load(object sender, EventArgs e)
{
Server.Transfer("EditsoaDoc.aspx",true);}
}
页面 EditsoaDoc.aspx 后台代码如下:
public partial class Web_RegularDocMag_EditsoaDoc : System.Web.UI.Page
{
public void Page_Load(object sender, EventArgs e)
{
//Web_RegularDocMag_CreateDocument aa;
if (!Page.IsPostBack)
{
Web_RegularDocMag_CreateDocument aa; //
aa = (Web_RegularDocMag_CreateDocument)Context.Handler;
string test = aa.Doctype ;}
}
}
代码这样写有什么错误吗?为什么会出现:
“CS0246: 找不到类型或命名空间名称“Web_RegularDocMag_CreateDocument”(是否缺少 using 指令或程序集引用?)”的错误呢?
wyh- 已移动 孟宪会Moderator 2009年10月12日 5:28 (发件人:.NET Framework 一般性问题讨论区)
答案
-
你好,Web_RegularDocMag_CreateDocument和Web_RegularDocMag_EditsoaDoc 是在同一命名空间下和程序集吗
如果不是需要导入Web_RegularDocMag_CreateDocument命名空间,同时检查下Web_RegularDocMag_CreateDocument的可访问性的修饰符,看下是否是public
同时我怀疑你通过Context.Handler获取Web_RegularDocMag_CreateDocument的可行性,因为这里的Handler应该是Web_RegularDocMag_EditsoaDoc这个页面的Handler了,你查看Transfer方法的源码可以知道的
如果你要跨页访问可以通过PreviousPage
在EditsoaDoc这个aspx里边添加<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
然后通过if (Page.PreviousPage != null)
{}
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond- 已标记为答案 huiaiyun7 2009年10月12日 7:35
-
asp.net 2.0之后只能这样写了
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EditsoaDoc.aspx.cs" Inherits="EditsoaDoc" %>
<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
EditsoaDoc.aspx.cs里:
Web_RegularDocMag_CreateDocument d = Context.Handler as Web_RegularDocMag_CreateDocument;
Response.Write(d.isNew);
【孟子E章】- 已标记为答案 huiaiyun7 2009年10月12日 7:35
-
用跨页技术 可以同样达到效果
你这个方式有个缺点 没有保存view视图状态 转到另一个页面
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="EditsoaDoc.aspx" />
页面 EditsoaDoc.aspx
<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
后台代码如下:
public partial class Web_RegularDocMag_EditsoaDoc : System.Web.UI.Page
{
public void Page_Load(object sender, EventArgs e)
{
if(Page.PreviousPage!=null)
{string d= this.PreviousPage.Doctype
}
}
}
}- 已标记为答案 huiaiyun7 2009年10月12日 7:35
全部回复
-
你好,Web_RegularDocMag_CreateDocument和Web_RegularDocMag_EditsoaDoc 是在同一命名空间下和程序集吗
如果不是需要导入Web_RegularDocMag_CreateDocument命名空间,同时检查下Web_RegularDocMag_CreateDocument的可访问性的修饰符,看下是否是public
同时我怀疑你通过Context.Handler获取Web_RegularDocMag_CreateDocument的可行性,因为这里的Handler应该是Web_RegularDocMag_EditsoaDoc这个页面的Handler了,你查看Transfer方法的源码可以知道的
如果你要跨页访问可以通过PreviousPage
在EditsoaDoc这个aspx里边添加<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
然后通过if (Page.PreviousPage != null)
{}
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond- 已标记为答案 huiaiyun7 2009年10月12日 7:35
-
asp.net 2.0之后只能这样写了
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EditsoaDoc.aspx.cs" Inherits="EditsoaDoc" %>
<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
EditsoaDoc.aspx.cs里:
Web_RegularDocMag_CreateDocument d = Context.Handler as Web_RegularDocMag_CreateDocument;
Response.Write(d.isNew);
【孟子E章】- 已标记为答案 huiaiyun7 2009年10月12日 7:35
-
用跨页技术 可以同样达到效果
你这个方式有个缺点 没有保存view视图状态 转到另一个页面
<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="EditsoaDoc.aspx" />
页面 EditsoaDoc.aspx
<%@ PreviousPageType VirtualPath="~/Web_RegularDocMag_CreateDocument.aspx" %>
后台代码如下:
public partial class Web_RegularDocMag_EditsoaDoc : System.Web.UI.Page
{
public void Page_Load(object sender, EventArgs e)
{
if(Page.PreviousPage!=null)
{string d= this.PreviousPage.Doctype
}
}
}
}- 已标记为答案 huiaiyun7 2009年10月12日 7:35