为什么我的ASP.NET webforms控件无法呈现?

时间:2011-08-30 16:18:40

标签: c# asp.net webforms

我有一种感觉,我错过了一件小事。我有一个非常简单的页面,是从VS2010中的ASP.NET模板创建的。我的Default.aspx只包含以下代码。 Site.Master页面正在按照预期进行操作。

<%@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。 HERE BE DRAGONS评论是可见的,这表明母版页和所有工作正常。我期待在输出中看到<h1>HI!</h1>标记。我错过了什么?这看起来非常基本。

4 个答案:

答案 0 :(得分:4)

看起来你指的是空代码隐藏类而不是带输出的ASCX文件。使用src指令中的@Register属性:

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

答案 1 :(得分:2)

我在这里看不到src属性你的控件在哪里?

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

答案 2 :(得分:2)

由于BigHelloBanner是一个Web用户控件,您应该尝试这样注册:

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

答案 3 :(得分:0)

您是否还需要为每个控件实例提供ID?