Не могу получить доступ к идентификатору управления в коде позади
-
19-09-2019 - |
Вопрос
У меня есть следующий код на моей странице ASPX:
<asp:Button runat="server" ID="myButton" Text="hello" />
И это в моем коде позади:
protected void Page_Load(object sender, EventArgs e)
{
myButton.Text = "bye";
}
По какой -то причине Intellisense поднимает идентификатор «Mybutton» в коде, но когда он компилирует, он говорит
Он не может построить, потому что это не узнает!
Моя страница - это страница ASPX по умолчанию, которая использует главную страницу, кнопка находится внутри элемента управления контентом, и все установлено для правильного запуска на сервере, страница работает и отображается нормально, за исключением этой проблемы с разрешением кнопки!
Любые идеи?
Решение
Похоже, ваш дизайнерский файл (pagename.designer.cs) немного испортился. Я бы попробовал удалить кнопку со страницы и добавить ее снова.
Другие советы
Если кнопка находится внутри контейнера для именования, как ретранслятор, вы не сможете использовать ее так. Вместо этого вам нужно сделать что -то вроде этого:
Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";
Я столкнулся с той же проблемой, сначала я пытался выяснить, что случилось с моим файлом Designer.cs. Но после того, как я понял, что для разметки веб -формы я использовал копию/вставку из веб -формы по умолчанию. Так что проблема заключалась в том, что, как сказал Protector One, убедитесь, что вы проверяете свойство @page:
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>
Я нашел простое решение для этого случая.
Просто откройте дизайн -файл и добавьте строку, которая соответствует вашему управлению пользовательским интерфейсом.
protected global::System.Web.UI.WebControls.Button myButton;
Где mybutton является Id
вашего контроля.
Я столкнулся с проблемой и заметил, что Designer.cs
Файлы были исключены из моего проекта.
Попробуйте искать их снова включить в ваш проект.
удачи
Я знаю, что проблема решена, но когда у меня была похожая проблема, когда я преобразовал веб -аплинацию из C# в VB - я решил это, добавив пространство имен x / cond namespace
У меня была та же проблема сегодня, и в моем случае решение было:
- Перейти к:
C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
- Удалить
Temporary ASP.NET Files
папка.
Я сталкивался с этим вопросом несколько раз. Иногда это классные имени в дизайнере и код, стоящий за не совпадают. В других случаях это пространство имен не соответствует. В других случаях страница дизайнера не получает сгенерированную переменную члена.
Как упоминал Mdresser, восстановление дизайнерского файла очень хорошо может позаботиться о проблеме. Просто убедитесь, что вы сначала сохранили страницу ASPX.
Убедитесь, что у вас нет файлов, которые случайно пытаются унаследовать или определить тот же (частичный) класс. Эти файлы могут быть совершенно не связаны с тем, где на самом деле появилась ошибка!
Это было долго. Buuuut Я столкнулся с этой же проблемой сегодня, так что, похоже, никогда не поздно. Для меня это происходило TextBox
был внутри ненукованной формы. Затем я установил идентификатор в форму, и я смог Acess TextBox
как это: idForm.idTextBox.ToString()
. Анкет Я думаю, это произойдет то же самое с button
.
Проблема заключается в том, что у вас может быть несколько файлов ASPX с CodeFile в директивных точках страницы в тот же файл кода. Он ожидает, что один и тот же элемент будет существует во всем файле ASPX, связанном с тем же кодом и, таким образом, выбросит ошибку компиляции.
Проверьте пространство имен во всех трех файлах. Анкет Иногда существует расхождение между именем пространства имен в файле Designer.cs и двумя другими файлами. Обязательно проверьте, что имя пространства имени сочетается во всех трех файлах
Просто измените свойство «Наследственное» в соответствии с тегом страницы
<% Page inherit = "Project_Name.otherform"
изменить это на
<% Page inherit = "Project_Name.YourForm"
И вы увидите в form2.aspx.desginer.cs имя класса также изменено и исправлено.
Позволь мне объяснить: Допустим, у вас есть 2 веб -формы Test1.aspx и test2.aspx. Вы скопировали какой -то кусок кода из test1.aspx в test2.aspx, ваш файл test2.aspx будет использовать тег страницы <% как:
<% Page inherit = "Project_Name.test1"
который должен был быть как:
<% Page inherit = "Project_Name.test2"
Из -за чего ваше тест.
После исправления вашего наследственного свойства сохраните и откройте Test2.aspx.designer.cs, чтобы проверить, и вы увидите в том, что имя класса также изменено. это будет похоже на:
public partial class test1
{
...
Изменился на
public partial class test2
{
...
Спасибо мне позже;)