На элементы управления ASP.NET нельзя ссылаться в выделенном коде в Visual Studio 2008 - PullRequest
31 голосов
/ 02 сентября 2008

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

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

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

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

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

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

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

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


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

Ответы [ 16 ]

34 голосов
/ 26 января 2010

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

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

16 голосов
/ 02 сентября 2008

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

здесь

%Temp%\VWDWebCache

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

%LocalAppData%\Microsoft\WebsiteCache
12 голосов
/ 02 сентября 2008

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

Если это так, то вам нужно найти их, используя метод 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");
7 голосов
/ 11 июня 2010

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

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

3 голосов
/ 20 марта 2012

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

3 голосов
/ 10 апреля 2009

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

2 голосов
/ 21 марта 2011

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

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

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

1 голос
/ 06 июня 2017

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

0 голосов
/ 06 сентября 2016

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

runat="server"

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

0 голосов
/ 13 января 2016

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

Пример:

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

Код класса:

Partial Public Class myControl
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...