C# asp.net:如何在我的应用程序中获取另一个页面的URL?

C# asp.net:如何在我的应用程序中获取另一个页面的URL?,c#,asp.net,C#,Asp.net,将asp.net classic与C#一起使用 假设我有两个页面,一个.aspx和两个.aspx(C#classesone和two) 在One.Page_Load()中,我想重定向到two.aspx 我一直在做Response.Redirect(“/two.aspx”),这当然是可行的,但是我有了硬编码的神奇值,我不希望这样。在这个简单的例子中没什么大不了的,但我的应用程序有>20个页面,这创造了许多神奇的价值。 我真正想做的是Response.Redirect(Two.Url)Url返回

将asp.net classic与C#

一起使用 假设我有两个页面,一个.aspx和两个.aspx(C#classes
one
two


在One.Page_Load()中,我想重定向到two.aspx

我一直在做Response.Redirect(“/two.aspx”),这当然是可行的,但是我有了硬编码的神奇值,我不希望这样。在这个简单的例子中没什么大不了的,但我的应用程序有>20个页面,这创造了许多神奇的价值。

我真正想做的是
Response.Redirect(Two.Url)
Url返回类似“Two.aspx”的内容。
(最终,我希望Url是我的主控程序的摘要,但让我们从简单开始)

关于如何在运行时以编程方式完成此任务,您有什么想法吗?
Url
可以是静态的,或者是实例属性,或者是方法,和/或者可以是请求参数,或者是任何“常用”选项。我只需要另一个页面对象的基本URL:)

像这样

    public static class Pages
    {
            public   const string One = "/t1.aspx";
            public   const string Two = "/t2.aspx";
            public   const string Three = "/t3.aspx";
    }
然后,参考使用

    var url = Pages.One;
?

在某些地方,页面URL需要硬编码。在类、结构、资源文件或web.config中,像这样

    public static class Pages
    {
            public   const string One = "/t1.aspx";
            public   const string Two = "/t2.aspx";
            public   const string Three = "/t3.aspx";
    }
public class BasePage : Page
{
    public virtual string GetVirtualUrl()
    {
        throw new NotImplementedException();
    }

    public void PageRedirect<T>() where T : BasePage, new()
    {
        T page = new T();
        Response.Redirect(page.GetVirtualUrl());
    }
}

public partial class OnePage : BasePage
{
    protected void Page_Load()
    {
        // Redirect to two.aspx
        PageRedirect<TwoPage>();
    }
}

public partial class TwoPage : BasePage
{
    public override string GetVirtualUrl()
    {
        return "~/two.aspx";
    }
}
然后,参考使用

    var url = Pages.One;
?

在某些地方,页面URL需要硬编码。在类、结构、资源文件或web.config中
public class BasePage : Page
{
    public virtual string GetVirtualUrl()
    {
        throw new NotImplementedException();
    }

    public void PageRedirect<T>() where T : BasePage, new()
    {
        T page = new T();
        Response.Redirect(page.GetVirtualUrl());
    }
}

public partial class OnePage : BasePage
{
    protected void Page_Load()
    {
        // Redirect to two.aspx
        PageRedirect<TwoPage>();
    }
}

public partial class TwoPage : BasePage
{
    public override string GetVirtualUrl()
    {
        return "~/two.aspx";
    }
}
{ 公共虚拟字符串GetVirtualUrl() { 抛出新的NotImplementedException(); } public void PageRedirect(),其中T:BasePage,new() { T page=新的T(); 重定向(page.GetVirtualUrl()); } } 公共部分类一页:BasePage { 受保护的无效页面加载() { //重定向到two.aspx 页面重定向(); } } 公共部分类TwoPage:BasePage { 公共重写字符串GetVirtualUrl() { 返回“~/two.aspx”; } }
公共类基页:第页
{
公共虚拟字符串GetVirtualUrl()
{
抛出新的NotImplementedException();
}
public void PageRedirect(),其中T:BasePage,new()
{
T page=新的T();
重定向(page.GetVirtualUrl());
}
}
公共部分类一页:BasePage
{
受保护的无效页面加载()
{
//重定向到two.aspx
页面重定向();
}
}
公共部分类TwoPage:BasePage
{
公共重写字符串GetVirtualUrl()
{
返回“~/two.aspx”;
}
}

对不起,我应该说得更清楚些。是的,我可以这样做,或者更好的是让每个类都有它自己的常量字符串,但这些解决方案只是将神奇的值从一个地方移动到另一个地方。我真的很想用编程方式来做:两个代码是用两个.ASPX.CS编码的,所以某处知道文件名,类似于C++中的文件。<代码>目录< /Cord>知道文件名。@ dLBooS-并且如何知道Too.ASPX确实是要重定向的页面?是的,您可以读取目录以获取文件名(给定权限),然后呢?(C++中的文件只是一个流)。您的意思是能够阅读two.aspx.cs的内容,并查看它是否包含“魔力值”?对不起,我应该更清楚。是的,我可以这样做,或者更好的是让每个类都有它自己的常量字符串,但这些解决方案只是将神奇的值从一个地方移动到另一个地方。我真的很想用编程方式来做:两个代码是用两个.ASPX.CS编码的,所以某处知道文件名,类似于C++中的文件。<代码>目录< /Cord>知道文件名。@ dLBooS-并且如何知道Too.ASPX确实是要重定向的页面?是的,您可以读取目录以获取文件名(给定权限),然后呢?(C++中的文件只是一个流)。您希望能够读取two.aspx.cs的内容,并查看它是否包含“magic value”?遍历名称为“two”的文件的目录,并获取完整的文件名。实际上没有asp.net“classic”。看起来您所指的是asp.net WebForms。ASP classic不是.net,通常基于vbscript。遍历名称为“2”的文件的目录,并获取完整的文件名。实际上没有ASP.net“classic”。看起来您所指的是asp.net WebForms。ASP classic不是.net,通常基于vbscript。