Pergunta

Eu tenho o seguinte código na minha página ASPX:

 <asp:Button runat="server" ID="myButton" Text="hello" />

E isso no meu código atrás:

protected void Page_Load(object sender, EventArgs e)
{ 
    myButton.Text = "bye"; 
}

Por alguma razão

Não pode construir porque não o reconhece!

Minha página é uma página ASPX padrão que usa uma página mestre, o botão está dentro de um controle de conteúdo e tudo está definido para ser executado corretamente, a página é executada e exibe bem, exceto por esse problema de resolução de botões!

Alguma ideia?

Foi útil?

Solução

Parece que o seu arquivo de designer (pagename.designer.cs) ficou um pouco confuso. Eu tentaria excluir o botão da sua página e adicioná -lo novamente.

Outras dicas

Se o botão estiver dentro de um recipiente de nomenclatura como um repetidor, você não poderá usá -lo assim. Em vez disso, você precisa fazer algo assim:

Button myButton = (Button)Container.FindControl("myButton");
myButton.Text = "bye";

Eu encontrei o mesmo problema, primeiro eu estava tentando descobrir o que havia de errado com meu arquivo designer.cs. Mas depois que percebi que, para a minha marcação do Webform, estava usando uma cópia/colar do WebForm padrão. Portanto, o problema era que, como o Protector One, disse que verifique a propriedade Indeit da @Page:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeBehind="Default.aspx.cs" Inherits="InputValidation._Default" %>

Encontrei uma solução simples para este caso.

Basta abrir o arquivo designer e adicionar uma linha que corresponda ao seu controle da interface do usuário.

protected global::System.Web.UI.WebControls.Button myButton;

Onde MyButton é Id do seu controle.

Eu enfrentei o problema e notei que Designer.cs Os arquivos foram excluídos do meu projeto.
Tente procurá -los inclui seu projeto novamente.
boa sorte

Eu sei que esse problema é resolvido, mas quando tive um problema similar, quando converter WebAplicação de C# para VB - resolvi isso adicionando namespace namespace x / final

Eu tive o mesmo problema hoje e, no meu caso, a solução foi:

  • Vamos para: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Exclua o Temporary ASP.NET Files pasta.

Eu encontrei esse problema algumas vezes. Às vezes, os nomes de classificação no designer e o código por trás do não correspondem. Outras vezes, é o espaço para nome que não corresponde. Outras vezes, a página do designer não recebe a variável de membro gerada.

Como o MDresser mencionou, a regeneração do arquivo de designer muito bem pode cuidar do problema. Apenas certifique -se de salvar a página ASPX primeiro.

Certifique -se de não ter arquivos que acidentalmente tentam herdar ou definir a mesma classe (parcial). Esses arquivos podem estar completamente relacionados ao local onde o erro realmente apareceu!

Já faz muito tempo. Buuuut eu estava enfrentando o mesmo problema hoje, então parece que nunca é tarde demais. Para mim, estava acontecendo porque o TextBox estava dentro de uma forma não nomeada. Então eu defino um ID para o formulário e pude acessar o TextBox assim: idForm.idTextBox.ToString(). Eu acho que vai acontecer o mesmo com um button.

O problema é que você pode ter vários arquivos ASPX com arquivo de código na página da página aponta para o mesmo arquivo CodeBehind. Ele espera que o mesmo controle exista em todo o arquivo ASPX vinculado ao mesmo código por trás e, assim, lançando o erro de compilação.

Verifique o espaço para nome nos três arquivos. Às vezes, há uma discrepância entre o nome do namespace no arquivo designer.cs e os outros dois arquivos. Certifique -se de verificar o nome do nome do nome corresponder nos três arquivos

Basta alterar a propriedade herdada em tag de página

    <% Page inherit = "Project_Name.otherform" 

mude para

    <% Page inherit = "Project_Name.YourForm"

E você verá em form.aspx.desginer.cs O nome da classe também é alterado e corrigido.

Deixe-me explicar: Digamos que você tenha 2 formulários da web test1.aspx e test2.aspx. Você copiou algum código de código de test1.aspx para test2.aspx, seu arquivo test2.aspx usará <% de página como:

    <% Page inherit = "Project_Name.test1"

que deveria ser como:

    <% Page inherit = "Project_Name.test2"

por causa do seu nome de classe Test2.aspx.designer.cs será alterado automaticamente para o mesmo que test1.aspx.designer.cs, pois é um arquivo gerado pelo sistema e você não poderá usar seus IDs de controle.

Depois de corrigir sua propriedade herdeira, salve e aberto test.aspx.designer.cs para verificar e você verá que o nome da classe também foi alterado. Será como:

    public partial class test1
    {
     ...

Mudou para

    public partial class test2
    {
    ... 

Obrigado mais tarde;)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top