目前在我的网络应用程序中,我有很多这样的行:
Response.Redirect("~/Default.aspx");
等。现在,我正在重新组织aspx页面结构,因为它非常扁平 - 一切都在一个文件夹中。所以我必须彻底搜索所有代码以修复aspx路径。所以我的问题是:有没有办法在ASP .NET中管理/组织网站页面结构 - 某种SiteMap,所以我有一个类似的代码:
Response.Redirect(Pages.Default);
这样我的代码将被关闭以进行某些aspx页面在文件夹之间移动的修改?
答案 0 :(得分:0)
我认为没有任何自动解决方案,你可能最终会自己构建一些东西。您可能想查看Asp.Net Sitemap的内容,尽管它主要关注导航控件。
http://msdn.microsoft.com/en-us/library/yy2ykkab.aspx
我遇到了你在一些项目上遇到的同样问题。一个简单的解决方案是创建常量/静态/枚举来表示页面名称/ URL:
public static class SiteMap {
public static readonly string Default = "/default.aspx";
}
当然可以让你做到
Response.Redirect(SiteMap.Default);
但是当页面传递所需的参数时,这种情况很快就会过时,并且迟早会遇到与参数名称完全相同的问题。所以我们通过添加像
这样的Url工厂类扩展了这个想法public static class SiteMap {
public static readonly string Article = "/blog/article.aspx";
}
public static class PageParams {
public static readonly string ArticleId = "aid";
}
public static class UrlFactory {
public static string GetUrlBlogArticle(int articleId){
return string.Format("/{0}?{1}={2}",SiteMap.Article, PageParams.ArticleId, articleId.ToString());
}
}
该方法确保所有链接以相同的方式工作并包含相同的参数。通过设置PageParams常量类,登陆页面/控件代码也更清晰,因为你可以做到
public void method(){
var articleId = Request[PageParams.ArticleId];
}
而不是随处可见随机请求参数名称。
希望能给你一些想法。
答案 1 :(得分:0)
我写了一个可以帮助你的开源项目http://navigation.codeplex.com/。
您可以在配置文件中列出您的页面和转换。这是一个例子:
<state key="Page1" page="~/Page1.aspx">
<transition key="Next" to="Page2"/>
</state>
<state key="Page2" page="~/Page2.aspx"/>
然后在你的代码中你可以像这样从Page1.aspx移到Page2.aspx:
StateController.Navigate("Next");
如果您有兴趣或需要任何帮助,请告诉我。