2015-12-14 4 views
10

У меня есть пользовательский элемент управления в ASP.NET (VB.NET в коде позади), определяется с ASCX:Пользовательский контроль становится родовым «UserControl», а не его фактического типа в классе конструктора

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

?

+0

Я не уверен, что ссылки * пользовательские элементы управления * (в отличие от обычных элементов управления сервером) в другом проекте являются поддерживаемым сценарием. –

ответ

1

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

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

Дополнительную информацию можно получить у link.

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

2

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

+0

Я пробовал задавать 'Global.Mynamespace.Controls.MyControl' явно в коде позади элемента управления, без кубиков. – MPelletier

+0

@MPelletier Я отредактировал свой ответ. Надеюсь, это поможет. – ic3man7019

+0

Я не могу этого сделать. Это код моей страницы. Я нуждаюсь в этом. И кроме того, у меня есть другие пользовательские элементы управления. – MPelletier

 Смежные вопросы

  • Нет связанных вопросов^_^