Frage

Ich habe den folgenden Code auf meiner ASPX -Seite:

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

Und das in meinem Code dahinter:

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

Aus irgendeinem Grund nimmt der IntelliSense die "MyButton" -ID im Code dahinter auf, aber wenn er kompiliert, heißt es

Es kann nicht bauen, weil es es nicht erkennt!

Meine Seite ist eine Standard -ASPX -Seite, auf der eine Masterseite verwendet wird. Die Schaltfläche befindet sich in einer Inhaltskontrolle und alles wird so eingestellt, dass es auf dem Server korrekt ausgeführt wird. Die Seite wird ausgeführt und angezeigt, mit Ausnahme dieses Problems mit der Schaltfläche!

Irgendwelche Ideen?

War es hilfreich?

Lösung

Klingt nach Ihrer Designerdatei (pagename.designer.cs) ist etwas durcheinander gebracht. Ich würde versuchen, die Schaltfläche von Ihrer Seite zu löschen und erneut hinzuzufügen.

Andere Tipps

Wenn sich der Knopf in einem Namensbehälter wie einem Repeater befindet, können Sie ihn nicht so verwenden. Stattdessen müssen Sie so etwas tun:

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

Ich habe das gleiche Problem gestoßen, zuerst habe ich versucht, mit meiner Designer.cs -Datei falsch zu sein. Nachdem mir klar wurde, dass ich für mein Webform -Markup eine Kopie/Einfüge aus der Standard -Webform verwendete. Das Problem war also, wie Protector One sagte, dass Sie die Erbe -Eigenschaft von @Page überprüfen:

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

Ich habe eine einfache Lösung für diesen Fall gefunden.

Öffnen Sie einfach die Designerdatei und fügen Sie eine Zeile hinzu, die Ihrer Benutzeroberfläche entspricht.

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

Wo MyButton ist Id Ihrer Kontrolle.

Ich habe das Problem konfrontiert und habe das bemerkt Designer.cs Dateien wurden von meinem Projekt ausgeschlossen.
Versuchen Sie, sie erneut in Ihr Projekt einzuschließen.
viel Glück

Ich weiß

Ich hatte heute das gleiche Problem und in meinem Fall war die Lösung:

  • Gehe zu: C:\Users\lenovo\AppData\Local\Temp\Temporary ASP.NET Files\
  • Löschen die Temporary ASP.NET Files Mappe.

Ich bin ein paar Mal auf dieses Problem gestoßen. Manchmal ist es in der Designerin und Code dahinter eingestuft, die nicht übereinstimmen. In anderen Fällen ist es der Namespace, der nicht übereinstimmt. In anderen Fällen wird die Designer -Seite nicht die Mitgliedsvariable generiert.

Wie Mdresser erwähnt, kann die Wiederherstellung der Designerdatei sehr gut das Problem kümmern. Stellen Sie einfach sicher, dass Sie zuerst die ASPX -Seite speichern.

Stellen Sie sicher, dass Sie keine Dateien haben, die versehentlich versuchen, dieselbe (teilweise) Klasse zu erben oder zu definieren. Diese Dateien können völlig nichts mit dem, wo der Fehler tatsächlich angezeigt wird, zusammenhängen!

Es ist lange her. Buuuut Ich habe mich heute mit dem gleichen Problem konfrontiert, also scheint es nie zu spät. Für mich passierte es, weil die TextBox war in einer nicht genannten Form. Dann setze ich eine ID auf das Formular und konnte das anhalten TextBox so was: idForm.idTextBox.ToString(). Ich denke, es wird dasselbe mit a passieren button.

Problem ist, dass Sie möglicherweise mehrere ASPX -Dateien mit CodeFile in Seitenrichtungen zur gleichen CodeBehind -Datei haben. Es wird erwartet, dass die gleiche Steuerung in allen ASPX -Dateien vorhanden ist, die mit demselben Code dahinter verknüpft sind und damit Kompilierungsfehler geworfen werden.

Überprüfen Sie den Namespace in allen drei Dateien. Manchmal gibt es eine Diskrepanz zwischen dem Namespace -Namen in der Datei designer.cs und den beiden anderen Dateien. Stellen Sie sicher

Ändern Sie einfach die Inherit -Eigenschaft unter Page -Tag

    <% Page inherit = "Project_Name.otherform" 

Ändern Sie es in

    <% Page inherit = "Project_Name.YourForm"

Und Sie sehen in Form2.aspx.desginer.cs Der Klassenname wird ebenfalls geändert und korrigiert.

Lassen Sie mich erklären: Angenommen, Sie haben 2 Webformulare test1.aspx und test2.aspx. Sie haben einige Code von test1.aspx bis test2.aspx kopiert. Ihre Test2.aspx -Datei verwendet <% Seitentag als:

    <% Page inherit = "Project_Name.test1"

Welches sollte als:

    <% Page inherit = "Project_Name.test2"

Aus diesem Grund wird der Name der Klasse test2.aspx.designer.

Nachdem Sie Ihre Erbeneigenschaft korrigieren, speichern und öffnen Sie Test2.aspx.designer.cs, um dies zu überprüfen, und Sie werden feststellen, dass der Klassenname ebenfalls geändert wird. Es wird wie:

    public partial class test1
    {
     ...

Geändert in

    public partial class test2
    {
    ... 

Danke mir später;)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top