Здесь есть похожие посты. Я просто хочу кое-что уточнить. Я реализовал это в тестовом проекте. Я создал две страницы page1.aspx и page.aspx являются копиями друг друга, кроме имен. Я настроил их так, чтобы они использовали один и тот же файл кодировки бэкенда.
page1.axpx -> page.aspx.cs
page2.aspx -> (код выше)
Мой вопрос,
Это хорошая идея, чтобы избежать лишнего кода и улучшить обслуживание?
Пока все работает в тестовом проекте выше. В моем реальном проекте я получаю очень распространенную ошибку
Имя 'xxxx' не существует в текущем контексте asp
Код не скомпилируется из-за вышеуказанной ошибки. Если я запускаю приложение из браузера, оно работает (или кажется). У меня вопрос, почему я не получаю эту ошибку в одном приложении, а не в другом. Эта проблема была исправлена сейчас. Но я хочу узнать, почему я сначала получаю эту ошибку, а потом играю с ней тут и там, ошибка исчезает.
Я считаю, что это действительно ошибка Microsoft. Как? Я объясняю это здесь.
Page1.aspx.cs действительно использует страницу Page.aspx, а не элементы управления page1.aspx. В Intellisence отображаются только элементы управления Page1.aspx (если вы добавите элемент управления на страницу 2, он не будет отображаться в intellesense, если вы добавите его на страницу Page 1, он будет показан). Поскольку элементы управления на обеих страницах одинаковы (включая имена и идентификаторы), они чудесным образом работают. Иногда компилятору это не нравится и выдает ошибку (без видимых причин). Microsoft должна решать эти проблемы более элегантно и не бросать это на нас.
Так что это для меня решено, но кто-нибудь может объяснить это таинственное поведение.