Пользовательский контроль становится общим "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 определен, конечно.