Это сводит меня с ума. В прошлом я мог иметь главную страницу, разместить пользовательский элемент управления на этой странице и создать свойство только для чтения, ссылающееся на этот usercontrol, и получить доступ к usercontrol и всем его свойствам из производной страницы. Теперь я получаю эту ошибку:
Тип «XXXX» определен в сборке, на которую нет ссылок. Необходимо добавить ссылку на сборку 'App_Web_2zw4yn55, версия = 0.0.0.0, культура = нейтральная, PublicKeyToken = null'.
Я посмотрел на старые проекты и увидел, что смог это сделать. Я использую .Net 4.0 сейчас, но не уверен, что это проблема.
Объявления моей страницы выглядят так ...
Мастер-страница:
<%@ Master Language="C#" AutoEventWireup="true" CodeFile="Main.master.cs" Inherits="MasterPages_Main" %>
<%@ Register src="../UserControls/WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1" %>
<uc1:WebUserControl ID="WebUserControl1" runat="server" />
Код для главной страницы:
public UserControls_WebUserControl TheWebControl { get { return this.WebUserControl1; } }
Производная страница:
<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Main.master" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ MasterType VirtualPath="~/MasterPages/Main.master" %>
<%@ Reference VirtualPath="~/MasterPages/Main.master" %>
Код для производной страницы:
protected void Page_Load(object sender, EventArgs e)
{
Master.TheWebControl.Pagetitle = "Hey";
}
Если я добавлю ссылку в объявлениях страницы производной страницы, чтобы пользовательский контроль работал, но я не должен был этого делать. Я не уверен, что происходит. Мне никогда не приходилось делать это раньше. Единственное, о чем я могу думать, это то, что мой web.config был настроен по-другому, но даже на моих старых страницах я не вижу прямых ссылок на usercontrol.
UPDATE:
Возможно, я ошибся. Оглядываясь назад на старый код, я действительно добавил ссылку в директивах страницы в usercontrol на производной странице.
Perhpas есть другой способ сделать это без добавления директивы?