11

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

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

控制:

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

5 回答 5

19

改变:-

<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>

<%@ Register TagPrefix="cc1" TagName="ctrl" Src="/path/to/ctrl.ascx" %>

您缺少TagName,它表示控件声明中冒号后面的文本。您也没有告诉引擎在哪里可以找到源文件(Src属性)。更改/path/to以表示从根目录到您的控件的路径。

于 2012-11-27T16:37:03.367 回答
3

如果您创建了自定义控件,那么您应该添加自定义控件的 dll 引用(从 Visual Studio 的工具箱中选择项目)。然后在页面中使用以下标签:

<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>

如果您创建了用户控件,则在您的页面中添加以下行:

<%@ Register src="~/UserControls/ctrl.ascx" TagName="ctrl" tagprefix="cc1" %>

于 2012-11-27T16:51:18.030 回答
2

代替

<%@ Register assembly="proj" namespace="proj.UserControls" tagprefix="cc1" %>

利用

 <%@ Register  src="~/UserControls/ctrl.ascx"  TagName="ctrl" tagprefix="cc1" %>
于 2012-11-27T16:36:48.873 回答
0

确保您没有在包含您的控件的面板或 div 上设置 visible="false"。

那会为我节省一个小时。

于 2016-06-13T16:29:53.777 回答
0

我不得不向已经包含很多控件的现有项目添加一个新的用户控件,并且想知道为什么我的没有渲染。原来你也可以在configurationsystem.webpagesWeb.config下指定这个,像这样:

<controls>
    <add tagPrefix="cc1" tagName="ctrl" src="~/UserControls/ctrl.ascx" />

...这将为整个项目注册控件,因此您不必在每个页面上都指定它。对于重用的控件很有用。

于 2018-06-06T12:23:08.933 回答