Frage

Wenn Sie nicht verwenden müssen runat="server" in ASP.net?

EDIT: Danke für alle Antworten, aber ich habe wirklich darüber nachgedacht runat="server" Inneren ein <asp: Schild.

War es hilfreich?

Lösung

Verwenden Sie das runat=server Attribut, wenn Sie ASP.NET-Steuerelemente verwenden und/oder Sie benötigen programmatischen Zugriff auf diese Steuerelemente in Ihrem Code.

HTML -Steuerelemente erfordern dieses Attribut nicht. Es ist nützlich, wenn Sie ein HTML -Element wie haben <span> <div>, oder <table> Wenn Sie die Möglichkeit haben möchten, in Code-Behind auf sie zugreifen zu können.

<asp:Label runat="server" id="foo" />
<div runat="server" id="bar />
...
foo.Text = "Hello Label";
foo.Attributes["class"] = "baz";

Andere Tipps

Sie müssen verwenden runat="server" Bei jeder Kontrolle, die Sie als Serversteuerung analysiert werden möchten.

Jedes Element mit runat="server" wird in der Seitenherarchie in eine Serversteuerung analysiert. Alles andere wird als einfacher Text behandelt und eingesetzt LiteralControl Steuerelemente in der Seitenhierarchie.

Die Ausnahme sind Elemente, die keine wirklichen Elemente sind, aber beispielsweise spezielle Tags in einem anderen Server -Tag ContentTemplate Stichworte. Sie brauchen keine runat="server" Weil die enthaltende Kontrolle sie analysiert.

Wenn Sie nicht möchten, dass der Server -Seite ASP.NET eine Server -Seitenvariable gegen uns rendert.

Im Allgemeinen verwenden Sie es nicht, wenn Sie das DOM -Element auf der Serverseite nicht manipulieren müssen, die nur für Layoutzwecke verwendet werden.

Ohne Runat = "Server" würde es auch keine andere Möglichkeit geben, HTML -Steuerelemente Server -Seitensteuerung zu erstellen. Es sieht nach einer seltsamen Sache aus, weil Sie Runat = "Client" nicht tun können.

Zusammenfassend können Sie es nicht an ASP .NET -Steuerelementen auslassen, und es waren wahrscheinlich die EASIESSETS und die sauberste Möglichkeit, alle Server -Seitensteuerungen für die Entwickler zu finden, die ASP .NET -Webformulare erstellt haben.

Quelle: http://mikeschinkel.com/blog/whyrunatserverforaspNetPart2/

Tag Runat = "Server" gibt an, dass der im Skriptblock enthaltene Code auf dem Server (und nicht auf dem Client) ausgeführt wird. Bei der Ausführung erstellt ASP.NET serverseitige Objekte, die diesen Code sowie eine Instanz der Seitenklasse enthalten, um die in der Seite definierten Steuerelemente als Instanzen ihres angegebenen Typs (System.Web.Ui.Webcontrols.TextBox, enthalten zum Beispiel). Dieses serverseitige Objekt wird auf die Benutzeranforderung aufgerufen und führt Code als Antwort auf Ereignisse aus.

Erstellen Sie die Kontrolle in Laufzeit

Ich brauche ein Etikett in Laufzeit, in der Zeit nicht runat = "Server" erforderlich ist, ist nicht erforderlich

Beispiel

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
   {
    Label  lblNew = new Label();
    lblNew.ID ="lblnew";
    lblNew.Text ="Test";
    }
}

Dieser Code erstellen Sie die Etikett in Laufzeit bei Seite. Laden Sie Ereignis

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