为什么我的ASP.NET webforms控件不能呈现?
问题描述:
我有一种感觉,我错过了一件小事。我有非常简单的页面,从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>
标记。我错过了什么?这看起来很基本。
答
它看起来像您提到的空代码隐藏类,而不是ASCX文件与输出。使用src
属性,在@Register
指令:
<%@Register
TagPrefix="tsi"
TagName="BigHelloBanner"
Src="BigHelloBanner.ascx" %>
答
难道你还需要给每个控件实例一个ID吗?
+0
的ID似乎是自动生成的,如果我不手动添加一个。 –
答
我在这里看不到src属性,你的控件在哪里?
<%@Register
TagPrefix="tsi"
Namespace="UserControlTest.Controls"
Assembly="UserControlTest"
src="?" %>
答
由于BigHelloBanner是一个Web用户控件,你应该尝试这样注册它:
<%@Register TagPrefix="tsi" TagName="BigHelloBanner" Src="~/pathToUserControls/BigHelloBanner.ascx" %>
这回答了我的主要问题,但我认为这将导致如何在运行时更改控件的后续工作。我会看到我无法弄清的。 –