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