如何以编程方式复制.aspx
页面及其代码?
我知道如何使用 File.Copy 方法,但这不是我需要的。 我正在做帮助系统。在这个帮助系统中现在只有两种类型( Situation1 , Situation2 )。我必须创建一些函数来创建 Situation3 , Situation4 ,等等。
我可以使用类似 Situation1 , Situation2 等类的类,等等。但问题是我需要为所有页面使用不同的URL。我不能做Help.aspx?type=situation1, help.aspx?type=situation2
之类的事情。
应该像Situation1.aspx, Situation2.aspx, Situation3.aspx
。请问有人可以举例说明吗?
答案 0 :(得分:2)
你正在进行的想法很糟糕。这有以下几个原因:
您如何将新页面纳入源代码控制(
如果您需要进行影响所有SituationX.aspx文件的更改,该怎么办?您必须转到每个文件并单独修复它们。
如果用户能够以任何方式影响文件内容,它也可能是一个安全漏洞。
更好的解决方案是使用路由。用户请求的URL不一定必须映射到特定文件。这样,开发人员就可以更好地控制网址的外观,创建"hackable"网址,这些网址也非常适合搜索引擎优化。告诉别人去更容易,并从URL中删除文件扩展名(用户不需要知道或关心)。
将此添加到您的全局应用程序类(global.asax或global.asax.cs)
[]
有一个名为Situation.aspx的Web表单。然后,它可以检查URL以检索用户请求的情境页面的ID。它可以从您的数据库中检索有关该特定情况的数据:
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("", "Situation/{situationId}", "~/Situation.aspx");
}
用户随后访问protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
var id = Page.RouteData.Values["situationId"];
var situation = Database.GetSituationById(id);
ShowSituationOnPage(situation);
}
}
,页面可以检索正确的情况并为其显示。
在MSDN上查看How to Define Routes For Web Forms Applications和How to Access URL Parameters on a routed page。