使用没有字符串URL的ASP.NET重定向?

时间:2010-04-23 17:27:06

标签: asp.net response.redirect

例如,我现在所拥有的是:

Page.Response.Redirect("Default.aspx", false);

需要硬编码字符串对我来说似乎很奇怪。 Default.aspx页面已经在我的项目中。那么有没有办法重定向如下所示:

Page.Response.Redirect(Default.aspx, false);

Default.aspx只是网络表单。我认为,如果出现问题,例如您删除了网络表单但没有更新重定向,这就很明显了。

这可能吗?或者还有另一种方式我应该看看这个吗?

我想我可以在课堂上使用静态属性做些什么,但我想知道是否有内置的东西呢?

4 个答案:

答案 0 :(得分:2)

Default.aspx与类Default不同,后者由IDE自动生成。您可以轻松地从同一Page类继承多个.aspx文件。

这就是没有内置机制的原因 - 不能保证标记页和代码类之间存在1对1的关系。

管理这个问题的最佳方法可能就是在你在多个地方进行重定向时,简单地为你用于重定向的字符串提供资源。

答案 1 :(得分:1)

理论上你的建议很有意义,但不是每个网站都使用文件来托管内容。实际上,您可以使用压缩zip(http://msdn.microsoft.com/en-us/library/aa479502.aspx)运行网站,例如使用虚拟路径提供程序来运行任何其他类型的源。

不过,我可以看到像这样的功能的价值。您可能想向VS IDE团队建议:

http://connect.microsoft.com/VisualStudio

答案 2 :(得分:0)

我理解你想要达到的目标,我想你可以创建自己的方法:

public string GetPageName(Type t)
{
     return t.name + ".aspx";
}

并称之为:

Response.Redirect(typeof(Default));

问题是这绝不是万无一失的。首先,您需要确保在重定向之前始终调用此方法,否则它将毫无意义。另一个问题是您不知道Default.aspx位于根文件夹中。那么你的所有HttpHandler呢,它的路径在web.config中或通过.ashx文件配置。

<强>更新 并且还要考虑@womp

的重点

答案 3 :(得分:0)

如果您使用的是表单身份验证,则会在{。{3}}的web.config中设置一个可以使用的内置构思。