Почему после преобразования проекта веб-сайта в проект веб-приложения я не могу получить доступ к общедоступным полям кода за файлом со встроенным кодом?

Итак, я пытаюсь преобразовать проект веб-сайта в проект веб-приложения. Я создал новый проект веб-приложения, переместил файлы, создал и заполнил файлы конструктора для каждого файла ASPX и ASCX и включил эти файлы. После этого я пробежался и исправил кое-какие мелкие вещи кое-где, но все в порядке ... кроме нескольких пользовательских элементов управления.

Итак, у меня есть пользовательские элементы управления с такими вещами, как ‹% = Message%> в них, что соответствует общедоступному свойству в коде, стоящем за классом. Visual Studio теперь сообщает: «Имя« Сообщение »не существует в текущем контексте». Я перепробовал все, от создания нового элемента управления и повторного ввода кода до использования более нового сокращенного тега ‹%:. Кажется, ничто не позволяет VS «видеть» свойство.

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DoubleHrBanner.ascx.cs" Inherits="Test.ctrl.misc.DoubleHrBanner" %>

<hr class="faded" />
<span><%=Message %></span>
<hr class="faded"  />

и

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Test.ctrl.misc
{
  public partial class DoubleHrBanner : System.Web.UI.UserControl
  {
    public string Message = "";
    public int Count = 0;
  }
}

person Licht    schedule 14.11.2014    source источник
comment
Компилируется ли код в вашем коде программной части?   -  person Andrew Barber    schedule 15.11.2014
comment
Действие сборки настроено на компиляцию. Проект в целом сейчас не компилируется из-за ошибок в файлах ASCX, связанных с этой проблемой. Так что я не могу сказать вам, работает ли это.   -  person Licht    schedule 15.11.2014
comment
Хммм ... файл ASCX обычно не должен быть частью компиляции. Файлы ASCX / ASPX компилируются только при первом запуске.   -  person Andrew Barber    schedule 15.11.2014
comment
Разве это не относится к типу проекта веб-сайта, из которого я пришел, а не к типу проекта веб-приложения, к которому я собираюсь? (Веб-приложения компилируются в одну DLL при сборке, которую IIS загружает в память и запускает. Или это мое понимание.) Кроме того, я работаю с новым файлом Usercontrol, а не с тем, который я переехал. Надеюсь, настройки по умолчанию будут правильными. Может, я как-то их напутал, но я не слишком много обезьянничал.   -  person Licht    schedule 15.11.2014
comment
Неа; это отдельная вещь для предварительной компиляции страниц / элементов управления. Я всегда использую веб-приложения и исторически имел дело со странными вещами из-за отключения; вроде как переименовать что-то, компилировать, но потом понял, что я тоже не переименовал это в ASPX. Приложение по-прежнему компилируется, но при загрузке задействованных страниц вы получаете ошибку компиляции с веб-сервера.   -  person Andrew Barber    schedule 15.11.2014
comment
Еще я хотел бы добавить, что в этом преобразовании мне не удалось использовать приложение «Преобразовать в веб-приложение» в дереве решений ... поскольку его там не было. Погуглил повсюду и не нашел решений для его отсутствия. Таким образом, я написал консольное приложение и немного смазки для решения этой задачи.   -  person Licht    schedule 15.11.2014
comment
Ааа ... может быть что-то там вызвало проблему. Если вам нужно сделать это вручную, вы можете начать с пустого веб-приложения и добавить оттуда свой код.   -  person Andrew Barber    schedule 15.11.2014


Ответы (1)


Я забыл обновить это некоторое время назад. Поэтому для тех, кто сталкивается с подобной ситуацией, я дам вам два фрагмента информации.

  1. Если вы ищете кнопку «Преобразовать в веб-приложение» в VS2013, она была перемещена из контекстного меню. Выберите элемент для преобразования в обозревателе решений, а затем щелкните «Проект»> «Преобразовать в веб-приложение» в верхней части VS.

  2. Если после преобразования у вас есть> 300 ошибок компилятора, а VS слишком сильно возражает против встроенного кода, просто игнорируйте это. Сначала исправьте все другие ошибки, и как только весь код и зависимый код (например, пользовательские элементы управления внутри пользовательских элементов управления) и VS в конечном итоге соберутся вместе и перестанут генерировать ошибки во встроенном коде без причины.

person Licht    schedule 26.11.2014
comment
Я столкнулся с этой проблемой несколько месяцев и до сих пор не могу понять, как избавиться от ошибок. Единственные ошибки, которые у меня есть, - это те, которые были у вас. - person Justin; 15.12.2015
comment
1: Попробуйте удалить любой встроенный код. 2: Убедитесь, что при указании кода для файлов для файлов ASPX, вызывающих ошибку, указано полное пространство имен и имя класса. - person Licht; 16.12.2015
comment
Встроенный код - это то, что мне нужно, например, для таких вещей, как <%# showEdit() %>. Он выдает ошибку, но все еще компилируется и работает. Удаление этого на самом деле не является исправлением. - person Justin; 29.12.2015