用户控件不呈现ascx的内容

时间:2012-11-27 16:28:21

标签: c# user-controls

我认为这是一个简单的问题,直到我开始寻找答案并意识到它是如此简单我是唯一拥有它的人

我的用户控件没有显示任何内容。我究竟做错了什么? (除了让这成为我的生活......)

控制:

<%@ 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>

5 个答案:

答案 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" />

...将注册整个项目的控件,因此您不必在每个页面上指定此项。适用于重复使用的控件。