2012-02-10 153 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博客一樣,我們在運行時創建新頁面。新頁面不在網站中,此頁面創建需要在運行時創建,並且需要動態。