На элементы управления ASP.NET нельзя ссылаться в коде программной части в Visual Studio 2008

Итак, моя визуальная студия не работает. Я говорю это НЕ преждевременно, так как это была моя первая реакция, когда я увидел, где я напортачил в своем коде. Когда я добавляю элементы управления на страницу, я не могу ссылаться на все из них в исходном коде. Некоторые из них я могу, кажется, что первые несколько, которые я помещаю на страницу, работают, потом это просто прекращается.

Сначала я подумал, что это может быть тип управления, поскольку изначально я пытался ссылаться на ретранслятор внутри панели обновлений. Я знаю, что правильно ссылаюсь на код на моей странице aspx. Но на случай, если это была моя ошибка, я начал воссоздавать страницу с нуля, и на этот раз убрал еще несколько элементов управления, прежде чем VS перестал распознавать мои элементы управления.

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

В, возможно, несвязанном примечании, когда я переключаюсь в ужасный режим «дизайна» страниц aspx, VS 2008 выдает ошибки и перезапускается.

Я уже отправил запрос в Microsoft. Я удалил все надстройки, переустановил визуальную студию.

Любой, кто хочет увидеть мой код, просто спросит, но я использую прямую визуальную студию WYSIWYG «новую страницу aspx», ничего особенного.

Я сомневаюсь, что кто-то сталкивался с этим, но вы?

У кого-нибудь были проблемы со съемкой этих вещей с помощью Microsoft? Любой способ ускорить этот билет без оплаты ??? Я разговаривал с представителем Microsoft в течение нескольких дней, но безуспешно, и я мертв в воде.


Джон Лимджап: Я отредактировал заголовок, чтобы сделать его ясным и описательным и, чтобы никто не считал его оскорбительным. «Foo-barred» не совсем соответствует правильному заголовку вопроса, хотя ваш вопрос явно правильный.


person Community    schedule 02.09.2008    source источник


Ответы (16)


попробуйте очистить локальный кеш VS. найдите свой проект и удалите папку. папка создана VS, по какой причине я, честно говоря, не понимаю. но у меня было несколько случаев, когда очистка и повторная сборка исправляли некоторые вещи ... надеюсь, это все, что вам нужно.

здесь

%Temp%\VWDWebCache

и, возможно, здесь

%LocalAppData%\Microsoft\WebsiteCache
person Brian Boatright    schedule 02.09.2008
comment
Вы знаете, где находится этот кеш в Vista? - person Brian G; 06.02.2009
comment
извини, я не знаю. Я установил Vista один раз, а затем вернулся к XP. Попробуйте просто поискать в папке VWDWebCache или WebsiteCache и посмотрите, сможете ли вы его найти. Если да, пожалуйста, добавьте еще один комментарий или ответ. - person Brian Boatright; 07.02.2009

Вышеупомянутое исправление (удаление временных файлов) не помогло мне. Мне пришлось удалить файл PageName.aspx.designer.cs, затем щелкнуть мою страницу правой кнопкой мыши и выбрать «Преобразовать в веб-приложение» в контекстном меню.

Когда Visual Studio попыталась перестроить файл конструктора, она обнаружила (и раскрыла мне) источник проблемы. В моем случае VS потерял ссылку на DLL, необходимую для одного из элементов управления на моей странице, поэтому мне пришлось очистить сгенерированные папки bin в моем проекте.

person Community    schedule 26.01.2010
comment
+1. Каждый раз, когда я сталкиваюсь с подобной проблемой, она всегда сводится к проблеме в автоматически созданном файле дизайнера. Выполнение этих шагов позволяет выявить ошибку. - person NotMe; 05.03.2010
comment
Если вы не можете найти параметр «Преобразовать в веб-приложение»: stackoverflow.com/questions/19561982/ - person André Pena; 28.09.2014
comment
Спасибо Андре Пена за то, что он указал, где найти опцию Convert Web App! Очень полезно! Я проголосовал за ваш комментарий, а также за ответ LorettaDave! - person James Lee; 22.02.2019

Находится ли элемент управления, на который вы пытаетесь сослаться, внутри ретранслятора?

Если да, то вам нужно найти их с помощью метода FindControl.

Например для:

<asp:Repeater ID="Repeater1" runat="server">
    <ItemTemplate>
        <asp:LinkButton ID="LinkButton1" runat="server">stest</asp:LinkButton>
    </ItemTemplate>
</asp:Repeater>

Вам нужно будет сделать это, чтобы ссылаться на него:

LinkButton lb = Repeater1.FindControl("LinkButton1");
person Sean Lynch    schedule 02.09.2008
comment
‹3 спасибо, я пытался конвертировать в веб-приложения и все такое. - person Jake Gaston; 09.07.2015

В моем случае я работал с некоторым старым кодом веб-сайта, который преобразовал в решение VS2008. Я столкнулся с той же проблемой.

Для меня исправление заключалось в том, чтобы щелкнуть правой кнопкой мыши проект веб-сайтов в обозревателе решений и выбрать «Преобразовать в веб-приложение». Это создало designer.cs файл для всех страниц, на которых раньше этих файлов не было.

person Community    schedule 11.06.2010

вы также найдете временные файлы .net, которые можно безопасно удалить здесь: C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files

person Community    schedule 09.04.2009

Я заметил, что это происходит из-за отсутствия файла .designer.cs. После исправления этой проблемы в моем случае (в основном у меня были эти файлы, скопированные из веб-проекта VS 2005 в проект VS 2010): щелкните правой кнопкой мыши файл .aspx и выберите меню «Преобразовать в веб-сайт», это создаст файл .designer.cs и тогда должен работать файл.

person Community    schedule 20.03.2012

В моем случае новые элементы управления asp, которые я добавил к существующим, не обнаруживались.

Что сработало для меня, так это принудительная перекомпиляция путем переименования существующего элемента управления, чтобы сломать сборку, например: изменение <asp:TextBox ID="txtTitle" runat="server" /> на <asp:TextBox ID="txtTitle2" runat="server" />

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

person Community    schedule 21.03.2011
comment
Другие решения у меня не работали. Этот сделал. Спасибо! - person killerbarney; 20.12.2011

Щелкните правой кнопкой мыши имя проекта и выберите «Очистить». затем проверьте папку bin, есть ли в ней оставшиеся dll. если да, удалите его. Это оно. просто восстановите, и все будет работать нормально.

person Community    schedule 15.01.2013
comment
Я использую VS 2017 pro, у меня снова и снова возникала одна и та же проблема, и это решение сработало для меня отлично. - person Lester; 02.01.2020

Это также может произойти, если свойство Inherits на исходной странице не соответствует имени класса в коде позади. Вообще говоря, это, вероятно, произойдет только в том случае, если вы скопировали / вставили файл .ascx / .aspx и забыли его обновить.

Пример:

<%@ Control AutoEventWireup="false" CodeBehind="myControl.ascx.vb" Inherits="myProject.myWrongControl" %>

Код за классом:

Partial Public Class myControl
person Community    schedule 12.01.2016

мы не можем изменить код, когда приложение запущено. Для этого сначала нажмите кнопку остановки вверху, которая остановит ваше приложение. Теперь нажмите кнопку в режиме разработки, он вставит код в файл .aspx.cs, затем напишите в нем код

person Community    schedule 06.06.2017

Проверьте свой aspx-файл на наличие ошибок, как только я столкнулся с этой проблемой

person Community    schedule 26.07.2012

У меня такое случалось несколько раз, и сегодня это случилось снова по новой причине. Обычно я запускаю свой проект через IIS, но для отладки мне нужно было запустить его локально. Обычно я использую порт 80 в IIS и 81 при отладке, но у меня были некоторые настройки в web.config, которые использовали 80, поэтому я просто убил сайт в IIS и переключил сайт на порт 80 в настройках проекта. По какой-то причине это все испортило и создало проблему, описанную в OP. Я начал пробовать что-то одно за другим, включая все советы, упомянутые здесь, но переключение порта обратно на 81 в настройках проекта - вот что в итоге сработало.

person Community    schedule 15.10.2012

Для меня сработало удаление / переименование файлов в следующем месте:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\myvirtualwebsite\e331e0a9 
person Community    schedule 30.07.2011

Просто чтобы добавить свои два цента к этой проблеме.

Единственное, что у меня сработало из всего вышеперечисленного, это «Очистить», а затем удалить все, что осталось в папке bin. Восстановите, и все элементы управления начали работать.

person Community    schedule 19.03.2013

К вашему сведению ... У меня тоже была эта проблема, и я решил ее исправить, удалив существующий файл .designer.vb, щелкнув правой кнопкой мыши проект и выбрав «Преобразовать в веб-приложение». Затем он показал настоящую «ошибку», из-за которой GUI сам себя гадил. Оказалось, что я использовал то же имя для двух других меток, но оно не отображалось в окне списка ошибок. Как только я переименовал один из двух лейблов, он заработал нормально и перестал доставлять мне неприятности.

person Community    schedule 04.06.2013

Вы должны добавить

runat="server"

к каждому элементу на вашей странице.

person Community    schedule 06.09.2016