2011-08-30 52 views
0

我有一種感覺,我錯過了一件小事。我有非常簡單的頁面,從VS2010中的ASP.NET模板創建。我的Default.aspx只包含以下代碼。 Site.Master頁面正在做它應該做的事情。爲什麼我的ASP.NET webforms控件不能呈現?

<%@Page 
    Title="Home Page" 
    Language="C#" 
    MasterPageFile="~/Site.master" 
    AutoEventWireup="true" 
    CodeBehind="Default.aspx.cs" 
    Inherits="UserControlTest._Default" %> 

<%@Register 
    TagPrefix="tsi" 
    Namespace="UserControlTest.Controls" 
    Assembly="UserControlTest" %> 

<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"></asp:Content> 

<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 

    <!-- HERE BE DRAGONS --> 
    <tsi:BigHelloBanner runat="server" /> 
    <tsi:SmallHelloBanner runat="server" /> 

</asp:Content> 

BigHelloBanner包含此:

<%@Control 
    Language="C#" 
    AutoEventWireup="true" 
    Visible="true" 
    CodeBehind="BigHelloBanner.ascx.cs" 
    Inherits="UserControlTest.Controls.BigHelloBanner" %> 

<h1>HI!</h1> 

無論在這兩個對象的代碼隱藏文件是空的,並且從UserControl繼承。行爲與從Control繼承的行爲相同。當我在呈現的輸出上查看源代碼時,除了一些換行符外,不會輸出HelloBanners中的任何內容。這裏的DRAGONS評論是可見的,這表明主頁和所有的工作正常。我期待在輸出中看到<h1>HI!</h1>標記。我錯過了什麼?這看起來很基本。

回答

4

它看起來像您提到的空代碼隱藏類,而不是ASCX文件與輸出。使用src屬性,在@Register指令:

<%@Register 
    TagPrefix="tsi" 
    TagName="BigHelloBanner" 
    Src="BigHelloBanner.ascx" %> 
+0

這回答了我的主要問題,但我認爲這將導致如何在運行時更改控件的後續工作。我會看到我無法弄清的。 –

0

難道你還需要給每個控件實例一個ID嗎?

+0

的ID似乎是自動生成的,如果我不手動添加一個。 –

2

我在這裏看不到src屬性,你的控件在哪裏?

<%@Register 
    TagPrefix="tsi" 
    Namespace="UserControlTest.Controls" 
    Assembly="UserControlTest" 
    src="?" %> 
2

由於BigHelloBanner是一個Web用戶控件,你應該嘗試這樣註冊它:

<%@Register TagPrefix="tsi" TagName="BigHelloBanner" Src="~/pathToUserControls/BigHelloBanner.ascx" %> 
相關問題