2012-02-10 152 views
5

我对C#和.NET非常陌生,我发现自己面临一个问题,我不知道我需要去哪个方向。ASPX动态页面渲染

我公司与许多功能,包括计费和更新第三方订阅履行系统。该系统具有在某些事件触发时自动发送电子邮件的功能。例如,每个订阅都会通过,我们称之为续订系列。这个系列包含了在订阅期间的几项努力。

当认购资格这一系列的努力,一定,我们就可以有一个事件发生,将导致系统发送一个HTTP POST请求给定的URI与XML有效载荷。端点(一个.aspx页面)接收请求,对其进行处理,并返回一个响应,在这种情况下为HTML代码。该HTML然后通过履行系统发送出去。

我有几个这样的.aspx页面和运行的创建了一个基本的Web应用程序。每个页面都有一个相应的.cs代码。

这是我的问题真正开始的地方。在我们的履行系统中,我们只能为每个事件和产品组合定义一个端点。所以,无论当时的订购是否符合资格,事件本身都是一样的。但是,不同的是HTTP POST请求的XML。我可以通过该XML来了解请求已生成的功效。原因很重要,因为相应的电子邮件的HTML每个努力都是不同的。以一种稍微不同的方式来表述,应该呈现的HTML对于努力1而言是自上而下不同的,而不是努力2.努力2与努力3不同,等等。

所以,我想弄清楚的是如何“引导交通”。由于所有这些请求都会到达单个端点,因此我需要动态地返回正确的HTML以进行相应的工作。

在该相同的应用程序不同的.aspx页,有一些内容,需要根据该请求的内容,动态地生成。在这种情况下,我使用了两个PlaceHolder控件,每个可能的文本集合有一个。然后,在后面的代码中,根据需要将它们的Visible属性设置为true或false。

我被解雇做,在这种情况下,早早就因为有五个六个HTML模板和馅所有的人都为一个页面是混乱和难以维持的想法。

这是我不知道下一步该做什么的地方。我有一种感觉,用户控件或自定义控件将成为未来之路?但是,简单的旧重定向是一个更好的选择?或者以上都不是?

回答

4

您解雇的解决方案非常接近正确的解决方案。但是,您可以采取一些措施来简化它并使维护更加容易。

我们要在这里做的是建立一个自定义的控制或对每项工作的用户控件。这将使您可以单独维护代码,而不必将所有内容混合在一起。然后,您的整个端点* .aspx页面由一个占位符控件组成。处理请求时,您的Page_Load方法将解析您的xml并计算出您需要的努力。然后,它将创建一个适当控件的新实例,将其添加到占位符,并将其余数据传递给控件以完成处理。

因为这里的所有控件(接收xml消息的能力)都有一些共同点,所以您可能首先需要创建一个基本控件,以便继承个别工作控件。

+0

好的...我和你在一起。似乎无法看到这棵树上的森林!当我试图在其他页面和这个页面之间建立连接时,我被困在PlaceHolder控件的唯一选项上,因为它们是可见的或不可见的。谢谢! – 2012-02-10 20:25:11

3

根据我的理解,您希望拥有一个端点,但仍能够在内部“路由”请求。这很容易。

例如,您可以使用Server.Transfer在内部传输请求。这样,您可以拥有5或6个不同的HTML模板,然后根据请求的内容将传入请求路由到正确的模板。

+0

哦,好的。这也是有道理的。谢谢! – 2012-02-10 20:26:55

0

enter link description here

在这里,我们在这里举一个例子来在运行时创建一个新.aspx页。我们也提供给页面名称的选项。用户可以按他/她的喜好给予。像Google博客一样,我们在运行时创建新页面。新页面不在网站中,此页面创建需要在运行时创建,并且需要动态。