2012-05-15 33 views
1

我開發了一個ASP.NET聊天應用程序。現在我想要與我的Tridion頁面進行一些整合。爲此,我需要在發佈頁面的文件後面添加一些代碼。還有一個問題是,我想通過點擊事件在頁面中添加一個按鈕。我怎樣才能做到這一點? 我做了什麼:我可以從Tridion發佈ASPX頁面及其代碼隱藏文件嗎?

<%@ Page language="c#" Inherits="SDLchat.ChatWin" CodeFile="ChatWin.aspx.cs" %> 
<%@ Register src="ChatLogin.ascx" TagName="c2" TagPrefix="uc2" %> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > 

<HTML> 
<HEAD> 
    <title>ChatWin</title> 
</HEAD> 
<body> 
    <form id="Form1" method="post" runat="server"> 
     <asp:Panel ID="Panel1" runat="server"> 
      <uc2:c2 ID="log2" runat="server" /> 
     </asp:Panel> 

     <asp:Panel ID="Panel2" runat="server" Visible="False"> 
      <asp:LinkButton ID="LinkButton1" runat="server" 
       onclick="LinkButton1_Click">Change Room</asp:LinkButton> 
     </asp:Panel> 
    </form> 
</body> 
</HTML> 

This my .net appliction files

這是我想在外表套上遷移我的ASP.NET web應用程序。請幫助

+2

您的頁面已經在Tridion之外工作嗎?如果不是,請先排序。如果它確實在Tridion之外工作:該頁面做了什麼以及如何與Tridion集成? –

+0

它在tridion外很好運作。並且頁面應該處理一些頁面加載事件。我想在tridion中發佈/開發chatwin.aspx幷包含用戶控件,如圖像(.ascx文件)所示。 – Coder

+1

您提到「該頁面應該處理一些頁面加載事件」兩次了。你的意思是什麼樣的事件? ASP.NET事件?或Tridion事件? –

回答

6

所以,你必須在這個應用程序的每一頁的兩個文件:

  1. 包含標記的ASPX文件
  2. 包含代碼

由於外表套上發佈的CS文件基於每頁一個文件,您可以通過爲它們創建兩個單獨的頁面來獲取從Tridion發佈的這兩個文件。或者,您可以選擇僅從Tridion發佈ASPX,並在將Web應用程序部署到IIS時部署CS文件。

我建議將ASPX內容放入Tridion的DWT模板構建塊中,然後將其作爲複合頁面模板中唯一的構建塊。

如果您決定也從Tridion發佈代碼隱藏CS文件,請爲其創建單獨的DWT,將代碼粘貼到該文件中併爲其創建單獨的複合頁面模板。


關於PageLoad事件的第二個問題:在此情況下,Tridion將只發布放入它的文件。它與您在這些文件中放置的ASP.NET代碼無關。如果ASP.NET頁面加載事件在Tridion之外工作,它將在您從Tridion發佈相同文件時起作用。

3

Frank已經做出了準確的答案,但我認爲將任何代碼從CMS發佈到Web應用程序是一種非常糟糕的做法。由於CMS用戶可以逐步更新應用程序,因此使用該方法無法測試整個應用程序。

我強烈建議將所有代碼放在Web應用程序中,並通過由Visual Studio等工具提供的典型Web應用程序部署過程來部署這些代碼,並且只發布引用了已經代碼的ASPX文件在你的web應用程序中。

+0

我認爲「非常糟糕的做法」誇大它。人們嚮應用程序發佈代碼的能力取決於安全設置,並且我知道多個Tridion安裝可能會通過從Tridion發佈錯誤的東西來破壞應用程序。即使在關鍵任務環境中,Tridion也完全有能力控制誰做什麼,並保護應用程序。另一方面,我同意這種情況不是主流,對於大多數正常情況,我會照你所描述的那樣去做。 –

3

我同意克里斯在這裏,只是因爲它可能發佈幾乎任何東西從SDL Tridion CMS(包括dll,.config文件,未編譯的代碼等)並不意味着你應該。

應用程序邏輯(或代碼)的生命週期與內容生命週期非常不同。通常情況下,代碼更改需要在開發,測試和驗收環境中進行仔細部署,測試,修復和重新部署,然後再由技術用戶在單次操作中部署到生產環境中。根據您的組織,您可能每月或更短/更長的開發和部署週期。

另一方面,您的真實生活內容通常只在生產環境中存在,並且非技術用戶按需要更新(可能是小時甚至更頻繁)。

如果您將內容管理與應用程序部署混淆,您將很快陷入混亂。想象一下有人不小心取消了App_Code結構組?如果一位編輯重新發布了整個Structure Group,但是沒有意識到你已經對代碼做了一些修改,那麼該怎麼辦?你如何確保bin結構組中的dll在正好發佈的同時,web.config和ascx控件在其他地方註冊?最好的情況下你的應用程序可能無法正常工作,最糟糕的情況是你的整個網站都會出現編譯錯是

,我所看到的和各種ASP.NET/SDL外表套上網站中使用的一些原則如下:

  • 使用標準的基本頁面(或有限的基礎頁,也許頁面模板確定)作爲所有發佈的aspx頁面爲一個共同的代碼 - 把通用的邏輯在這裏
  • 對於任何特定的功能,在控制(ASCX或網頁控制)封裝這個,把邏輯的代碼,這
  • 有。 cs爲基本頁面,在bin目錄中編譯後的dll中的控件和其他邏輯的代碼 - App_Code is grea但可以創建部署頭痛與所有這些不同的文件來管理
相關問題