【问题标题】:Dynamic Page Rendering in ASPXASPX 中的动态页面呈现
【发布时间】:2012-02-10 20:06:10
【问题描述】:

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

我的公司与第三方订阅履行系统合作以实现许多功能,包括计费和续订。该系统具有在触发某些事件时自动发送电子邮件的能力。例如,每个订阅都会经历我们所说的续订系列。本系列包含在订阅的整个生命周期中展开的多项努力。

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

我创建了一个基本的 Web 应用程序,其中的一些 .aspx 页面启动并运行。每个页面都有一个对应的.cs代码隐藏文件。

这是我的问题真正开始的地方。在我们的履行系统中,我们只能为每个事件和产品组合定义一个端点。因此,无论订阅当时有资格获得哪种努力,事件本身都是相同的。但是,不同的是 HTTP POST 请求的 XML。正是在那个 XML 中,我可以知道该请求是针对哪些工作而生成的。重要的原因是因为相应电子邮件的 HTML 对于每个工作都不同。换一种说法,应该呈现的 HTML 从上到下是不同的,努力 1 与努力 2 不同。努力 2 与努力 3 不同,依此类推。

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

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

我很早就打消了在这种情况下这样做的想法,因为有五六个 HTML 模板,并且将它们全部塞入一个页面会很混乱且难以维护。

这就是我不知道下一步该怎么做的地方。我有一种感觉,用户控件或自定义控件将成为要走的路?但是,普通的旧重定向是更好的选择吗?还是以上都没有?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的...我和你在一起。在这棵树上似乎看不到森林!当我试图在另一个页面和这个页面之间建立联系时,我陷入了对 PlaceHolder 控件可见或不可见的唯一选择。谢谢!
    【解决方案2】:

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

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

    【讨论】:

    • 哦,好的。这也是有道理的。谢谢!
    【解决方案3】:

    enter link description here

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多