我认为这是一个简单的问题,直到我开始寻找答案并意识到它是如此简单我是唯一拥有它的人
我的用户控件没有显示任何内容。我究竟做错了什么? (除了让这成为我的生活......)
控制:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ctrl.ascx.cs" Inherits="proj.UserControls.ctrl" %>
asdjkldasfjasdfljdfasjklasdfjkl
使用:
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="page.aspx.cs" Inherits="proj.Admin.page" %>
<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<cc1:ctrl ID="test" runat="server" />
</asp:Content>
答案 0 :(得分:18)
变化: -
<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>
要
<%@ Register TagPrefix="cc1" TagName="ctrl" Src="/path/to/ctrl.ascx" %>
您缺少TagName
,它表示控件声明中冒号后面的文本。您也没有告诉引擎在哪里找到源文件(Src
属性)。更改/path/to
以表示从根到您的控件的路径。
答案 1 :(得分:3)
如果您已创建自定义控件,则应添加自定义控件的dll引用(从Visual Studio的ToolBox中选择项目)。然后在页面中使用以下标记:
<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>
如果您创建了用户控件,请在页面中添加以下行:
<%@ Register src="~/UserControls/ctrl.ascx" TagName="ctrl" tagprefix="cc1" %>
答案 2 :(得分:2)
而不是
<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>
使用
<%@ Register src="~/UserControls/ctrl.ascx" TagName="ctrl" tagprefix="cc1" %>
答案 3 :(得分:0)
确保您未在包含控件的面板或div上设置visible =“false”。
那会让我度过一个美好的时光。
答案 4 :(得分:0)
我不得不为已经包含很多内容的现有项目添加一个新的用户控件,并想知道为什么我的渲染没有。事实证明,您也可以在Web.config
,配置, system.web ,页面下指定此内容,如下所示:
<controls>
<add tagPrefix="cc1" tagName="ctrl" src="~/UserControls/ctrl.ascx" />
...将注册整个项目的控件,因此您不必在每个页面上指定此项。适用于重复使用的控件。