Пользовательский контроль становится общим "UserControl", а не его фактическим типом в классе Designer

У меня есть настраиваемый элемент управления в ASP.NET(код VB.NET в коде), определенный с помощью ASCX:

<%@ Control Language="vb" AutoEventWireup="false" CodeBehind="MyControl.ascx.vb" Inherits="Mynamespace.Controls.MyControl" %>

<!-- some html and other custom controls-->

И в коде позади:

Namespace Controls

    Public Class MyControl
        Inherits System.Web.UI.UserControl

Это устанавливается в библиотеке. В другом проекте этот элемент управления используется на странице:

<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="mypage.aspx.vb" 
    Inherits="myproject.mypage" culture="auto" meta:resourcekey="Page" uiculture="auto" 
    Transaction="RequiresNew" MasterPageFile="Mynamespace.Master" 
    Theme="ThemeBase2" StylesheetTheme="ThemeBase2" %>

<%@ Register tagprefix="Controls" tagname="MyControl" src="../Controls/MyControl.ascx" %>

<%-- some asp.net --%>

<Controls:MyControl ID="mycontrol1" runat="server" 
                    MyCustomProperty="value" />

Однако, когда я строю, я получаю сообщение об ошибке

"MyCustomProperty" не входит в "System.Web.UI.UserControl".

И на странице designer.vb я вижу:

Protected WithEvents mycontrol1 As Global.System.Web.UI.UserControl

Как это сделать:

Protected WithEvents mycontrol1 As Global.Mynamespace.Controls.MyControl

?

Ответ 1

Ваш ascx файл недоступен, потому что он находится в библиотеке

Вам необходимо сохранить ascx файл в качестве встроенного ресурса вашей библиотеки и загрузить его в качестве внешнего ресурса в своем веб-приложении.

Вы можете проконсультироваться с этой ссылкой для получения дополнительной информации.

Если вы хотите поделиться своими элементами управления, я советую создать UserControl вместо CustomControl. К сожалению, работы больше, потому что дизайнер не используется

Ответ 2

Убедитесь, что MyControl определяется внутри Global.Mynamespace.Controls.MyControl. Он наследует это пространство имен, но кажется, что это должно быть пространство имен, в котором оно определено. Кроме того, убедитесь, что MyCustomProperty определен, конечно.