2012-05-15 41 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但可以创建部署头痛与所有这些不同的文件来管理
相关问题