1

我尝试编写一个简单的服务器控件来控制我网站中的横幅。

它应该是这样的:

<Banners:mng_bnr ID="Upper_bnr / aside_bnr / bottom_bnr / etc" runat="server" />

然后控件将类似于:

    <%@ Control Language="C#" %>

<script runat="server">

 protected void Page_Load(object sender, EventArgs e)
 {


 switch(which_banner)
 {
 case which_banner.upper_banner_wide: 
<!-- Ad code -->
 <script type="text/javascript"><!--
JS code
 </script>
 <script type="text/javascript"

 </script>
 <!-- *** Ad Code *** --> 
break;

case which_banner.upper_banner_small:
 <!-- Ad code -->
 <script type="text/javascript"><!--
JS code
 </script>
 <script type="text/javascript"

 </script>
 <!-- *** Ad Code *** --> 
break;

case which_banner.aside_336_280_top:

 <!-- Ad code -->
 <script type="text/javascript"><!--
JS code
 </script>
 <script type="text/javascript"

 </script>
 <!-- *** Ad Code *** -->

但是,我不知道如何获取和处理每个控件的 ID(每个页面上应该有大约 5-6 个控件,每个控件都有自己的 ID - 这意味着不同的横幅)

非常感谢。

4

1 回答 1

1

这个帖子太模糊了。我认为您要问的是如何将横幅控件的 ID 从父页面传递到此控件。在这种情况下,你会做这样的事情:

 private string _bannerId = string.Empty;
 public string BannerId
 {
      get { return _bannerId; }
      set { _bannerId = value; }
 }

然后你的开关看起来像这样:

 switch(_bannerId)
 {
     case "banner1":
     break;

     case "banner2":
     break; 
 }

然后在您的父页面上,您将执行以下操作:

 <Banners:mng_bnr BannerId="Upper_bnr" runat="server" />

如果您想传递多个横幅 ID,我建议您使用集合或为每个横幅提供一个属性,但这实际上取决于您要实现的目标。

希望这可以帮助。

- 编辑 -

在编写必要的代码方面,有很多方法可以做到这一点。例如,您可以执行以下操作:

switch(_bannerId)
{
 case "banner1":
     scriptLiteral.Text = "<script>...</script>";
 break;

 case "banner2":
     scriptLiteral.Text = "<script>...</script>";
 break; 
}

然后在您的控制下,您将拥有

<asp:Literal id="scriptLiteral" runat="server" />

不过,我可能会使用RegisterClientScriptBlock

于 2012-08-08T18:02:13.470 回答