Регистрация пользовательских элементов управления не удается - PullRequest
3 голосов
/ 14 сентября 2010

Я пытаюсь зарегистрировать свои пользовательские элементы управления в файле webconfig, потому что я получаю сообщение об ошибке Элемент не существует, но я получаю следующую ошибку при попытке зарегистрировать их в webconfig:

Invalid or missing attributes found in the tagPrefix entry. For user control, you must also specify 'tagName' and 'src'. For custom control, you must also specify 'namespace', and optionally 'assembly'

Ниже приведен код в файле webconfig:

<pages>
  <controls>
    <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add tagPrefix="IPAMControl" tagName="contact_us" namespace="IPAM.Website.Controls" src="~/controls/contact_us.ascx" />
    <add tagPrefix="IPAMControl" tagName="erh_list" namespace="IPAM.Website.Controls" src="~/controls/erh_list.ascx" />
    <add tagPrefix="IPAMControl" tagName="header" namespace="IPAM.Website.Controls" src="~/controls/header.ascx" />
    <add tagPrefix="IPAMControl" tagName="footer" namespace="IPAM.Website.Controls" src="~/controls/footer.ascx" />
    <add tagPrefix="IPAMControl" tagName="main_tnavbar" namespace="IPAM.Website.Controls" src="~/controls/main_tnavbar.ascx" />
    <add tagPrefix="IPAMControl" tagName="program_header" namespace="IPAM.Website.Controls" src="~/controls/program_header.ascx" />
    <add tagPrefix="IPAMControl" tagName="program_list" namespace="IPAM.Website.Controls" src="~/controls/program_list.ascx" />
    <add tagPrefix="IPAMControl" tagName="signup_section" namespace="IPAM.Website.Controls" src="~/controls/signup_section.ascx" />
    <add tagPrefix="IPAMControl" tagName="speaker_list" namespace="IPAM.Website.Controls" src="~/controls/speaker_list.ascx" />
    <add tagPrefix="IPAMControl" tagName="track" namespace="IPAM.Website.Controls" src="~/controls/track.ascx" />
  </controls>
</pages>

Страницы, имеющие эту проблему, также ссылаются на MasterPages, если это вообще имеет значение:

<%@ Page Language="C#" AutoEventWireup="true" MasterPageFile="~/programs/MasterProgram.master" CodeBehind="~/programs/wim2011/default.aspx" Inherits="IPAM.Website.programs.wim2011._default" %>

, и каждый из нихвнутри своих папок.

Пожалуйста, помогите.

1 Ответ

9 голосов
/ 14 сентября 2010

Избавьтесь от атрибута пространства имен, поскольку ASP.NET сбивает с толку то, пытаетесь ли вы зарегистрировать пользовательский элемент управления или пользовательский элемент управления.

Контроль пользователя:

<add tagPrefix="SomeTagPrefix" src="~/Controls/SomeControl.ascx" tagName="SomeTagName"/>

Пользовательский контроль:

<add tagPrefix="SomeTagPrefix" namespace="SomeNamespace" assembly="SomeAssembly"/>

Итак, в вашем примере:

<add tagPrefix="IPAMControl" tagName="track" src="~/controls/track.ascx" />

А на ASPX / ASCX вы используете его так:

<IPAMControl:track id="ipamTrack" runat="server" />

См. здесь для получения дополнительной информации.

EDIT

Чтобы доказать это работает - я сделал следующее:

  1. Создание нового веб-приложения
  2. Создать новую папку с именем «Controls» в корне веб-приложения
  3. Добавлен новый «Веб-контроль пользователя» под названием «MyUserControl.ascx»
  4. Модифицированный web.config для добавления регистрации элемента управления
  5. Изменен Default.aspx для добавления элемента управления.

И все отлично работает.

Вот пользовательский элемент управления:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyUserControl.ascx.cs" Inherits="WebApplication1.Controls.MyUserControl" %>
<span>Hi, im a user control, how are you?</span>

Вот часть отредактированного файла web.config:

<pages>
      <controls>
        <add tagPrefix="MyControls" tagName="MyUserControl" src="~/Controls/MyUserControl.ascx"/>
      </controls>
    </pages>

Вот изменение Default.aspx, которое я сделал:

<MyControls:MyUserControl id="myUserControl" runat="server" />

И страница отображается правильно.

Теперь, если то, что я сделал здесь, не отличается от того, как вы пытаетесь это сделать, у вас должен быть другой код / ​​ошибки, которые мешают этому.

Не знаю, чем еще я могу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...