ASPX中的动态页面绘制

本文关键字:绘制 动态 ASPX | 更新日期: 2023-09-27 18:24:17

我是C#和.NET的新手,我发现自己面临着一个问题,我不确定该朝哪个方向前进。

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

当订阅符合本系列的某项工作时,我们可以生成一个事件,该事件将导致系统向具有XML有效负载的给定URI发送HTTPPOST请求。端点(.aspx页面)接收请求,对其进行处理,并返回包含HTML代码的响应。然后,履行系统通过电子邮件发送HTML。

我已经创建了一个基本的web应用程序,其中一些.aspx页面正在运行。每个页面都有一个相应的.cs代码隐藏文件。

这就是我的问题真正开始的地方。在我们的履行系统中,每个事件和产品组合只能定义一个端点。因此,无论订阅当时符合哪种努力,事件本身都是一样的。不过,不同的是HTTPPOST请求的XML。正是在该XML中,我可以判断为哪项工作生成了请求。之所以重要,是因为对应电子邮件的HTML对于每项工作都是不同的。用一种稍微不同的方式表达,对于努力1和努力2,应该呈现的HTML从上到下是不同的。努力2与努力3不同,依此类推

所以,我想弄清楚的是如何"指挥交通"。由于所有这些请求都将到达一个端点,因此我需要为相应的工作动态返回正确的HTML。

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

在这种情况下,我很早就打消了这样做的想法,因为有五到六个HTML模板,把所有模板都塞进一个页面会很混乱,很难维护。

这就是我现在的处境,我不知道下一步该怎么办。我有一种感觉,用户控件或自定义控件将是一种方式?但是,简单的旧重定向是更好的选择吗?或者以上都没有?

ASPX中的动态页面绘制

您忽略的解决方案非常接近正确的解决方案。然而,您可以做一些事情来简化它并使维护更容易。

我们在这里要做的是为每项工作构建一个自定义控件或用户控件。这将使您能够单独维护工作的代码,而不会将所有内容混合在一个地方。然后,您的整个endpoint*.aspx页面由一个占位符控件组成。在处理请求时,Page_Load方法将解析xml,并确定您需要做什么样的工作。然后,它将创建适当控件的新实例,将其添加到占位符中,并将其余数据传递给控件以完成处理。

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

据我所知,您希望有一个单一的端点,但仍然能够在内部"路由"请求。这很容易实现。

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

在此处输入链接描述

在这里,我们给出了一个在运行时创建新的.aspx页面的示例。我们还提供了指定页面名称的选项。用户可以随心所欲地给予。就像谷歌博客一样,我们在运行时创建新页面。新页面不在网站中,此页面创建需要在运行时创建,并且需要是动态的。