Verwendet C # eine Skriptsprache für Ereignisse?

8

Einer meiner Freunde (ein PHP-Entwickler) hat mir gesagt, dass C # nicht über die Kapazität für die Verwaltung von Ereignissen verfügt. Ereignisse werden nicht generiert oder nicht von C # -Codes gesteuert (Like Button Click , Selected Index Changing usw.). Es ist durch eine andere Skriptsprache wie JavaScript und er sagte mir seine JScript . Und dass alle Steuerelemente wie Beschriftungen und Schaltflächen clientseitig sind und nicht auf den Server gehen müssen.

Dann lautet meine Frage: Warum runat="server" für alle asp-Steuerelemente? Er sagte auch, dass die Umleitung (Response.Redirect) auch auf der Client-Seite passiert, seine nicht Server-Seite und C# haben nicht die Fähigkeit, dies zu tun, weil es ein PROGRAMMING LANGUAGE nicht ein SCRIPTING LANGUAGE .

Ich bin total verwirrt mit seiner Antwort und ich bin nicht mit seiner Antwort zufrieden. Kann mir jemand sagen, was es ist?

  1. Was ist runat="server" ? Und was ist, wenn alle Steuerelemente clientseitig sind?
  2. Kann c # Redirect, Event Generation, Handling usw.?
  3. Wenn c # nicht die Fähigkeit hat, welche Skriptsprache benutzt Windows? Und wie funktioniert es unabhängig vom Browser?
  4. Was ist mit Response.Redirect ? Ist es Client-Seite? Dann wie es funktioniert?
  5. Verwendet ASP irgendeine Scripting language für events ?

Ich bin neu bei C# . Vielleicht ist das eine schlechte Frage, aber kann jemand eine richtige Antwort geben? Ich bin total verwirrt.

Nach Ereignissen bedeutet Ereignisse wie Button_Click, SelectedIndexChanged usw.
Und ich erwähnte C # hier, weil ich C # verwende,
Danke

    
Arun CM 27.01.2014, 06:27
quelle

3 Antworten

7

Es ist keine Sprache Sache, es ist ein Framework / Technologie-Ding. Zum Beispiel können ASP.net-Webformulare Ereignisse im Code ähnlich behandeln wie in einer Windows-Anwendung, aber es besteht nur darin, HTTP-Anfragen zu verpacken. In MVC (das auch C # ist), behandeln Sie Seitenereignisse, indem Sie mit dem Controller unter Verwendung Ihrer Standard-HTTP-Verben (get, post, put, delete usw.) interagieren.

Ich würde ihm sagen, dass php in diesem Fall keine Ereignisse behandelt. Da sowohl PHP als auch ASP serverseitige Sprachen sind, antworten sie alle auf HTTP-Anfragen, nicht auf Ereignisse. Aber Klicks sagen dem Browser, dass er Dinge tun und mit dem Server kommunizieren soll. Javascript würde mit Ereignissen umgehen und dann mit dem Server kommunizieren, aber der Punkt ist, sein Argument ist ein wenig durcheinander.

Andere Antworten:

  1. Der Runat-Server teilt asp einfach mit, dass Sie dieses Objekt auf dem Server verwenden möchten Server, so dass es einige Objekte und Verweise auf HTML-Elemente erstellt damit Sie mit ihnen im serverseitigen Code interagieren können.
  2. Ja
  3. Windows verwendet keine Skriptsprache. Ihre ASP-Anwendung ist Verwenden Sie die Sprache, in der Sie sie programmiert haben. ASP.net generiert jedoch etwas Javascript, um Windows-Desktop-Programmierstile zu emulieren.
  4. Response.Redirect passiert auf der Serverseite, es teilt dem Framework lediglich mit, ein Objekt, das in eine korrekte HTTP-Antwort umgesetzt wird.

Vielleicht möchten Sie etwas über die Grundlagen der Webentwicklung lernen. Genauer gesagt, wie http ist Statless und wie http Verben arbeiten. Es ist einfacher zu verstehen, was das Framework macht, wenn Sie verstehen, was passiert, wenn Sie kein Framework verwenden.

UPDATE: Nach den Änderungen habe ich Ihren Beitrag erneut gelesen und sehe, was das Problem ist. Dein Freund hat meistens Recht. C # ist keine Client-seitige Sprache, daher kann es nicht auf Seitenereignisse reagieren - also ist er dort richtig. Was ASP.net jedoch tut, ist Javascript, das diese Lücke überbrückt. Im Gegensatz dazu tut ASP / MVC das nicht, also müssten Sie das Javascript (oder auch nur grundlegende Formulareinreichungen) schreiben, die mit dem Controller sprechen würden, und dann müssten Sie die Antwort des Servers entsprechend behandeln.

>

Er hat also Recht, Sie können nicht direkt C # -Code schreiben, um auf Seitenereignisse zu reagieren. Aber wenn Sie in C # mit ASP.net entwickeln, können Sie in C # programmieren und das notwendige Javascript für Sie generieren. Es wird aus Ihrer Sicht meist nahtlos sein.

    
Sinaesthetic 27.01.2014 06:41
quelle
3

Ich denke, vielleicht muss der Kontext der Unterhaltung, die Sie mit Ihrem Freund hatten, verstanden werden. Es scheint, Sie beziehen sich auf ASP.net nicht notwendig C # im Allgemeinen.

1. Was ist der Runat-Server? Und warum, wenn alle Steuerelemente clientseitig sind

Was in der ASP.net-Welt zu verstehen ist, ist der Unterschied zwischen Entwurfszeit, Serverseite und Clientseite. Im grundlegenden Lebenszyklus einer Seite würde der Compiler die Entwurfszeit-Seiten verwenden, um zu verstehen, wie ein Kontrollbaum auf der Serverseite aufgebaut wird. Steuerelemente, die als runat="server" gekennzeichnet sind, teilen dem Compiler mit, dass das Steuerelement als Teil des Designs einen Teil der Kontrollstruktur bilden muss, die auf dem Server erstellt wird.

2.Ist c # kann Redirect, Ereignisgenerierung, Handhabung etc.

Der Kontext ist hier wichtig. Ich vermute, wir sprechen nicht über C # im Allgemeinen eher ASP.net? ASP.net verwendet Ereignisse als die Möglichkeit, mit Anforderungen vom Server zu interagieren. Wenn Sie auf eine typische Seite in ASP.net klicken, fangen die clientseitigen JavaScript-Hooks das onlick-Ereignis ein und erstellen die Anforderung zum Senden an den Server. Die Seite wird dann die Argumente viewstate, event und event an den Server zurücksenden. Die Serverseite rekonstruiert den Kontrollbaum vom Viewstate und basierend auf den Event- und Event-Argumenten wird das entsprechende Event auf dem Server ausgelöst. Wenn Sie die serverseitigen Hooks für das Ereignis eingerichtet haben, werden Sie sie wie bei jedem Ereignis abfangen. Redirect wäre auch etwas, was im serverseitigen Code passiert.

3. Wenn c # nicht die Fähigkeit hat, welche Skriptsprache benutzt Windows? und wie es unabhängig vom Browser funktioniert

C # ist keine Skriptsprache, es ist kompiliert, naja ... der Kürze halber gehen wir damit um. ASP.net-Seiten sind in der Regel die Kombination aus C # serverseitigem Code und clientseitigem JavaScript-Code. Cient Seite würde Ereignisse abfangen und die Anfrage auf Serverseite übergeben.

4.und Was ist mit respose.redirect? ist es Client-Seite? dann wie es funktioniert

Response.redirect wäre serverseitig nicht clientseitig. Wenn Sie auf eine Seite des Seitenclients umleiten müssen, verwenden Sie Javascript window.location.href = '...'; oder etwas ähnliches

    
Warrenn enslin 27.01.2014 07:03
quelle
0

Kontext: Web ... sonst bist du sicher, dass er / sie ein Freund ist:)

  • Wie oben ist es nicht "die Sprache", es ist Ihre Wahl von ASP.net-Geschmacksrichtungen

  • Wenn es Web Forms ist, dann arbeitet ASP.Net mit Javascript auf der Client-Seite und welcher .net-Sprache auf der Serverseite (z. B. c #, vb)

  • Wenn es MVC / Razor ist, gibt es keine Abhängigkeit . Sie könnten alles auf der Server-Seite komplett per POST, GET usw. ausführen (nur sagen). Wenn man wollte, könnte man das auch in Web Forms machen ... nicht das sollte man:)

  • Umgekehrt könntest du auch eine 100% Javascript App machen (100% clientseitig) - natürlich mit dem Verständnis dafür (Einschränkungen, Sicherheitsüberlegungen etc.).

EdSF 27.01.2014 07:58
quelle

Tags und Links