2012-08-08 39 views
1

我嘗試編寫一個簡單的服務器控件來控制我站點中的橫幅。如何在服務器控制/ C#中獲取ID?

應該等somethink:

<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 - 這意味着不同的橫幅)

非常感謝。

+0

<%= Banner.ClientId%>可以幫到您嗎? Actualy我不明白你想在哪裏使用橫幅廣告? – user854301 2012-08-08 17:19:32

回答

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雖然。

+0

非常感謝您的幫助!只是另一個小問題:在我需要把谷歌廣告 – 2012-08-08 20:11:57

+0

我已編輯我的帖子回答這個問題的情況下。 – dparsons 2012-08-09 13:22:32

+0

嘿,不工作.... – 2012-08-09 17:06:28