ASPX中的动态页面渲染

时间:2012-02-10 20:06:10

标签: c# asp.net c#-4.0

我是C#和.NET的新手,我发现自己遇到了一个问题而且我不确定我需要朝哪个方向前进。

我公司与第三方订阅履行系统合作,提供许多功能,包括结算和续订。该系统能够在触发某些事件时自动发送电子邮件。例如,每个订阅都会通过,我们称之为续订系列。这个系列包括在订阅期内传播的几项努力。

当订阅符合本系列的某些努力时,我们可以生成一个事件,该事件将导致系统向具有XML有效负载的给定URI发送HTTP POST请求。端点(.aspx页面)接收请求,处理它,并返回响应,在本例中为HTML代码。该HTML随后由履行系统通过电子邮件发送出去。

我创建了一个基本的Web应用程序,其中包含一些.aspx页面并且正在运行。每个页面后面都有一个相应的.cs代码。

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

所以,我想弄清楚的是如何“引导流量”。由于所有这些请求都将来到单个端点,因此我需要为相应的工作动态返回正确的HTML。

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

我认为在这种情况下很早就会这样做,因为有五到六个HTML模板,并且将所有这些模板填充到一个页面中会很麻烦且难以维护。

这就是我不知道接下来该做什么的地方。我觉得用户控制或自定义控件将成为可行的方法?但是,简单的旧重定向是一个更好的选择吗?或者以上都没有?

3 个答案:

答案 0 :(得分:4)

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

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

由于此处所有控件之间存在一些共性(接收xml消息的能力),因此您可能首先要为要继承的各个工作控件创建一个基本控件。

答案 1 :(得分:3)

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

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

答案 2 :(得分:0)

enter link description here

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