我尝试编写一个简单的服务器控件来控制我的站点中的横幅。
它应该是这样的:
<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 -这意味着不同的横幅)
非常感谢。
发布于 2012-08-09 02:02:13
这篇文章太含糊了。我认为您所问的是如何将您的banner控件的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" />如果你想传入多个banner id,我建议使用一个集合或者为每个banner提供一个属性,但这真的取决于你想要实现的目标。
希望这能有所帮助。
-编辑--
例如,您可以这样做:
switch(_bannerId)
{
case "banner1":
scriptLiteral.Text = "<script>...</script>";
break;
case "banner2":
scriptLiteral.Text = "<script>...</script>";
break;
}然后在你的控制下,你会有
<asp:Literal id="scriptLiteral" runat="server" />不过,我可能会使用RegisterClientScriptBlock。
https://stackoverflow.com/questions/11869786
复制相似问题