我正在使用一个 Web 应用程序项目。
我的 web 根目录中有一个名为 Users 的文件夹,在该文件夹中我有一个名为 UserList.aspx 的页面
我想要做的是输入 Response.Redirect(Users.UserList.URL)
我认为我可以做的是创建一个扩展 Page 的类并添加一个名为 URL 的静态属性,该属性调用 MethodInfo.GetCurrentMethod().ReflectedType (我认为这还没有测试过),然后转换 Users.UserList -> ~/Users/UserList.aspx
我知道的这种方法的问题是我需要遍历每一页并使其扩展基类,并且它不适用于任何包含“-”字符的页面。
优点是,如果页面被移动,则没有任何断开的链接(当页面名称空间错误时,Resharper 会给出)。
此外,每个接受查询字符串参数的单独页面都可以有一个静态方法,这样如果我想添加/删除参数,我可以看到使用这些参数等的内容。另外,如果我想调用该页面,我不必检查参数的名称,例如 UserId userId、Id 或 id。所以这看起来像 Users.ViewUser.GetUrl(1) -> ~/Users/ViewUser.aspx?UserId=1
所以问题是:有没有更好的方法来做到这一点?还是原则上这是一个坏主意?