ASP. NET Core 7 MVC | Trevoir Williams | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 1.

      Einführung

      1:59

    • 2.

      GitHub-Konto erstellen

      2:31

    • 3.

      Installieren . NET 7 SDK

      3:13

    • 4.

      Visual Studio installieren (jedes Betriebssystem)

      2:19

    • 5.

      Alternative – Visual Studio 2022 installieren (Windows und Mac)

      5:55

    • 6.

      SQL Server Express installieren

      5:21

    • 7.

      Alternative – SQL Server auf Docker installieren (jedes Betriebssystem)

      12:09

    • 8.

      Microsoft Data Studio installieren

      3:27

    • 9.

      ASP.NET Core MVC erstellen – Visual Studio

      7:01

    • 10.

      ASP.NET Core MVC erstellen – Visual Studio

      6:24

    • 11.

      Visual Studio Tour

      13:21

    • 12.

      Führung von Dateien und Ordnern

      25:26

    • 13.

      Projekt zu GitHub hinzufügen

      9:22

    • 14.

      Die Layoutdatei und Bootstrap verstehen

      8:16

    • 15.

      Die Homepage ändern

      17:09

    • 16.

      Eine Über uns Seite hinzufügen

      9:07

    • 17.

      Zu GitHub hinzufügen

      2:19

    • 18.

      Mit Azure Data Studio in Datenbank verbinden

      4:49

    • 19.

      Datenbank erstellen

      5:58

    • 20.

      Scaffold Database mit Entity Framework Core

      19:34

    • 21.

      Scaffolding und -Controller – Teil 1

      12:25

    • 22.

      Scaffolded Controller verstehen

      20:42

    • 23.

      Gestellte Ansichten verstehen

      15:57

    • 24.

      Scaffolding und -Controller – Teil 2

      6:22

    • 25.

      Zu GitHub hinzufügen

      0:45

    • 26.

      Ansichten und Elemente anpassen – Übersicht

      1:00

    • 27.

      Boostrap Styling hinzufügen

      10:19

    • 28.

      Mit jQuery löschen

      19:15

    • 29.

      Datatables hinzufügen

      7:05

    • 30.

      Benutzerdefinierte Etiketten hinzufügen

      8:58

    • 31.

      Datenbankänderungen verwalten

      8:15

    • 32.

      Syntaxfehler beheben

      3:22

    • 33.

      Zu GitHub hinzufügen

      1:08

    • 34.

      Authentifizierung verstehen

      3:35

    • 35.

      Registrieren für Auth0

      15:35

    • 36.

      Authentifizierung testen

      6:30

    • 37.

      Benutzerbezogene Seiten einrichten

      11:31

    • 38.

      Letzter Schliff

      4:06

    • 39.

      Zu GitHub hinzufügen

      0:19

  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Jedes Niveau

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

129

Teilnehmer:innen

--

Projekte

Über diesen Kurs

Übersicht

Mithilfe von ASP.NET Core 7, Entity Framework und der dotnet Kommandozeilenschnittstelle erarbeiten wir ein kleines 7, während wir Schlüsselkonzepte in der ASP.NET MVC erlernen. Du lernst auch, beliebte Entwicklungswerkzeuge, Frameworks und Bibliotheken wie Bootstrap 5 und jQuery zu verwenden, um eine dynamische und benutzerfreundliche Anwendung zu entwickeln. Dieser Kurs zeigt dir, wie du Open-Source- und plattformübergreifende Tools nutzen kannst, um eine datengesteuerte Web-Anwendung zu entwickeln, die auf jedem Betriebssystem laufen kann. Das Beste ist, dass unsere Werkzeuge auch auf jedem Betriebssystem verwendet werden können.

Warum Lerne . NET 6 / 7

Microsoft . NET ist ein Open-Source-und plattformübergreifende Entwicklungsrahmen, das die business vieler der weltweit führenden Unternehmen antreibt. Es ist die vorherrschende Technologie, mit der Unternehmenstechnologie vorangebracht werden. Unternehmen haben sich entschieden. NET für seine bewährte Skalierbarkeit, Zuverlässigkeit und Support.

C#, die flagship von . NET, gehört zu den am häufigsten verwendeten Sprachen. Es ist eine universelle Programmiersprache, die nahezu jedes Problem lösen kann, von Desktop über mobile bis hin zu dynamischen Webanwendungen. Daher besteht weltweit eine hohe Nachfrage nach . NET-Entwickler in verschiedenen Branchen, was bedeutet, dass mehr Jobs für Kandidaten mit einer auf der Grundlage basierenden Stiftung zur Verfügung stehen. NETTOtechnologien.

Am Ende dieses Kurses solltest du in der Lage sein:

  • Eine vollständig datengesteuerte Web-Anwendung erstellen

  • Verwenden Sie die Befehlszeilenschnittstelle von dotnet und komplette Aufgaben wie:

    • Eine Datenbank mit Entity Framework Core erstellen

    • Ansichten und Controller erstellen

    • Eine Anwendung ausführen und debuggen.

    • Pakete in einem Projekt verwalten.

  • Verstehe, wie sich Modelle, Ansichten und Controller kombinieren, um eine Webapplikation zu erleichtern

  • Datenmodelle und database verwenden und bearbeiten.

  • Verstehe, wie du Ansichten und Aktionen zu einem Controller hinzufügen

  • Verwenden Sie Bootstrap 5, um das Gesamtbild und das Gefühl der Web-Anwendung zu manipulieren.

  • GitHub für das source verwenden.

  • Verwenden Sie beliebte plattformübergreifende Entwicklungswerkzeuge wie:

    • Visual Studio

    • Azure Data Studio

    • Docker

  • OpenID Connect Authentifizierung mit Auth0 hinzufügen

Inhalt und Übersicht

Um diesen Kurs zu absolvieren, musst du einige Kenntnisse der HTML-, CSS- und Objektorientierten Programmierung haben, wenn nicht mit C#. Selbst wenn du wenig Einwirkung bei der . NET Development Stack, dieser Kurs ist einsteigerfreundlich und voller Entwicklungstipps.

Dieser Kurs hat mehrere Stunden Premium-Inhalte, ist aber intelligent aufgebaut, um verwandte Aktivitäten auf der Grundlage jedes Moduls in der zu erstellenden Anwendung zu markieren. Wir werden uns auch bei der Fehlersuche und Fehlersuche ansehen, während wir weitergehen, bewährte Praktiken implementieren, effiziente Logik schreiben und verstehen, warum Entwickler Dinge so tun, wie sie es tun. Dein Wissen wird sich Schritt für Schritt im Verlauf des Kurses entwickeln und du wirst herausgefordert, das Beste zu sein, das du sein kannst.

Triff deine:n Kursleiter:in

Teacher Profile Image

Trevoir Williams

Jamaican Software Engineer

Kursleiter:in

Skills dieses Kurses

Entwicklung Webentwicklung
Level: Beginner

Kursbewertung

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

1. Einführung: Hallo und willkommen zu diesem Kurs, SP dotnet Core plattformübergreifende Entwicklung. Ich bin Ihr Dozent für Voir Williams und bin seit über einem Jahrzehnt Softwareingenieur und Vorlesung. In diesem Kurs werden wir einige einfache Schritte befolgen , die auf jeder Plattform repliziert werden können . Das stimmt. Sie werden diesen Kurs unabhängig davon machen, ob Sie Mac OS, Linux oder Windows verwenden . Und Sie werden in der Lage sein, mitzuhalten und eine asp.net-Core-MVC-Anwendung zu erstellen asp.net-Core-MVC-Anwendung , Dinge wie Entity Framework Core zu lernen und einen datenbankorientierten Ansatz zu verfolgen, wir uns angesehen haben Bootstrap Five- und jQuery-Bibliotheken. Wir werden die Integration mit Auth Zero , einem OpenID Connect-Anbieter, durchführen. Und während du all das tust, wirst du dich mit GitHub vertraut machen. Beachten Sie, dass die Entwicklungstools, die wir verwenden werden sehr wichtig sind, bereit, dunkler zu werden, damit wir eine SQL Server-Instanz unabhängig von unserem Betriebssystem hosten können eine SQL Server-Instanz , obwohl SQL Der Server ist hauptsächlich für die Windows-Verteilung konzipiert. Wir verwenden auch Visual Studio Code als Ihr Datenstudio und die Dotnet-CLI, die wir alle wieder auf jedem Betriebssystem verwenden können. Wissen Sie, nur um die Zone zu aktivieren, während wir Visual Studio Code und Azure Data Studio verwenden. So vielseitige plattformübergreifende Entwicklungstools und sie sind sehr leicht, sodass es keine Rolle spielt, welche Spezifikationen Ihre Maschine hat. Sie verwenden nicht so viele Ressourcen wie ihre Gegenstücke, wie Visual Studio 2022 und das SQL Server Management Studio. Sie können diese Tools also auf einer weniger leistungsstarken Maschine verwenden. Sie können erneut auf jedem Betriebssystem verwendet werden. Sie bieten übersichtliche Integrationen mit verschiedenen Diensten von Drittanbietern und sind leistungsstark genug , um alles zu erstellen. Jetzt hoffe ich, dass du genauso aufgeregt bist wie ich und ich kann es kaum erwarten, dich im Kurs zu sehen. 2. GitHub-Konto erstellen: Ordnung Leute, in dieser Lektion werden wir den sehr einfachen Einrichtungsprozess zum Erstellen eines GitHub-Kontos durchgehen den sehr einfachen Einrichtungsprozess . Github ist also wohl die größte Social-Coding-Plattform. Es ist einer der beliebtesten Anbieter von Waren. Und es gehört Microsoft und ist kostenlos für Open Source und persönliche Entwicklung. Du kannst dort auch private Projekte haben und diesen Kurs veranstalten, wir werden GitHub verwenden. Also, wenn dies dein erstes Mal ist, hast du vielleicht gehört, dass sowohl das Quellcodeverwaltungsmanagement als auch GitHub sind . Und du willst diese Erfahrung wirklich machen. Keine Sorge, wir werden es in diesem Kurs verwenden und Sie werden diese Erfahrung genießen. Um loszulegen, gehst du zu github.com und von hier aus kannst du dich anmelden. Ich gehe also davon aus, dass Sie noch keinen A-Kegel haben. Wenn Sie sich also anmelden, erhalten Sie ein sehr einfaches Formular, in dem Sie nach Ihrer E-Mail-Adresse gefragt Sie nach Ihrer E-Mail-Adresse damit Sie diese angeben und fortfahren können. Und eigentlich denke ich, dass Sie nur Ihre E-Mail-Adresse und Ihr Passwort benötigen, also habe ich bereits ein Konto, aber lassen Sie mich einfach versuchen, eine andere E-Mail-Adresse einzugeben. Und dann erstellst du ein Passwort. Und sobald Sie mit der Erstellung dieses Passworts fortfahren, wollen sie einen Benutzernamen. Sie können diesen Benutzernamen erstellen. Lassen Sie mich einfach etwas Willkürliches erstellen und dann weitermachen. Und dann fragen sie dich einfach, ob du ein paar Werbeartikel möchtest. Weiter. Und sie sind als Scheck eingefangen. Und dann, im Grunde, am Ende all dessen, erhalten Sie eine Bestätigungs-E-Mail. Sobald Sie sich verifiziert haben , können Sie sich anmelden. Also werde ich einfach weitermachen und mich anmelden und dir zeigen, wie diese Erfahrung aussehen würde. Sobald Sie sich mit Ihrem Benutzernamen und Passwort oder Ihrer E-Mail-Adresse und Ihrem Passwort angemeldet haben Ihrem Benutzernamen und Passwort , sehen Sie einen Bildschirm, der ähnlich aussieht. Ich habe schon ein paar Repositorys, also hast du vielleicht nichts auf der linken Seite, dann ist das in Ordnung. Deshalb sind wir hier. Aber du wirst sehen, dass ich ziemlich viele Repositorys habe. Und das ist mein Profil. Wenn du zu meinem Profil gelangen möchtest, könntest du jederzeit zu github.com gehen und meinen Benutzernamen, der einfach mein Name ist , abschneiden. Und es wäre ähnlich für Sie und , die zu Ihrem Profil navigieren möchten. Auf alle Repositories, an denen Sie arbeiten sobald sie veröffentlicht wurden, können zugegriffen werden. Und das ist das Schöne an GitHub. Es hilft Ihnen, zu anderen Projekten beizutragen und Ihre Projekte so zu teilen, dass auch andere Personen zu ihnen beitragen können. Sobald Sie Ihr Konto eingerichtet haben, können Sie mit der nächsten Lektion fortfahren. 3. Installieren . NET 7 SDK: Ordnung Leute, also richten wir unsere Umgebung weiter ein. Und der nächste Schritt ist die Installation der Punktnetze eines SDK. Sie können einfach zu.net.microsoft.com oder einfach google.net SDK aufrufen. Okay, ich denke, das ist am einfachsten , einfach google.net. Also SDK und das erste Suchergebnis würden Sie sicher zu dieser Seite führen. Nein. Dotnet Seven ist die neueste Veröffentlichung zum Zeitpunkt der Aufnahme, jedoch die Standardversion, was bedeutet, dass sie aus der Mode kommen wird , wenn Dotnet Eight herauskommt. Wir haben auch das Six-Punkt-Tool der Version, das langfristige Unterstützung bietet. Also viel von dem, was wir in diesem Kurs tun werden, obwohl wir Dotnet Seven verwenden werden, wird es mehr oder weniger kompatibel sein mit seinen sechs Ensembles, außer vielleicht ein paar Cis-Phrasen. Ich werde auf jeden Fall darauf hinweisen, wo sich der Code zwischen dem, was Dotnet Seven bietet, und dem, was wir in Dotnet Six tun können, unterscheidet zwischen dem, was Dotnet Seven bietet . Zum Zeitpunkt dieser Aufnahme ist Dotted Seven jedoch die neueste und beste, und deshalb werden wir sie verwenden und Sie können gerne mit Dotnet Seven fortfahren. Um zu beginnen, sollten Sie das SDK installieren. Nun gibt es zwei Dinge , die Sie installieren möchten. Sie sollten das SDK für Entwicklungsressourcen installieren. Und natürlich können Sie Ihr Betriebssystem entsprechend wählen . Wenn Sie also auf einem Windows-Computer sind, sollten Sie die 64-Bit-Version verwenden und können entsprechend Mac- oder Linux-Versionen wählen. Zu Hosting-Zwecken sollten Sie dann aber auch die Runtime installieren. Sie können also auch das Hosting-Paket für Windows oder die entsprechende Version auf Basis Ihres Betriebssystems installieren Windows oder die entsprechende Version . Sie können diese beiden also herunterladen und installieren. Davon abgesehen werden wir Visual Studio Code verwenden, weil wir, Visual Studio Code, plattformübergreifend sind. Ich möchte nicht für alle Betriebssysteme sorgen, die Mönche, Mac und Windows. Also werden wir Visual Studio Code verwenden. Wenn Sie jedoch auf einem Windows-Computer sind und Visual Studio bevorzugen , eine voll ausgestattete, sehr, sehr leistungsstarke IDE, dann können Sie einfach bei Windows bleiben und tatsächlich einfach herunterladen und installieren Sie Visual Studio 2022, das mit dem integrierten SDK geliefert wird. Also werfe ich das einfach da raus, oder? Also, wenn Sie Visual Studio Code verwenden, der weitaus leichter und kompakter ist. Und wir werden viele Dotnet-CLI-Befehle verwenden. Dann können Sie weitermachen und das SDK manuell installieren. Wenn Sie Visual Studio 2022 verwenden möchten. Und ich werde Ihnen in einer nachfolgenden Lektion zeigen, wie Sie Visual Studio 2022 einrichten in einer nachfolgenden Lektion zeigen, wie Sie Visual Studio 2022 Dann können Sie den SDK-Download-Schritt tatsächlich überspringen. Ich empfehle jedoch, dass Sie die Laufzeit trotzdem verwenden. Sobald Sie diese heruntergeladen und installiert haben, und es ist eine einfache Installation, klicken Sie einfach auf Weiter, Weiter, Weiter in Sternen gesetzt, und dann können Sie das Fenster schließen. Dann können Sie mit der nächsten Lektion fortfahren, in der wir Visual Studio Code einrichten werden. 4. Visual Studio installieren (jedes Betriebssystem): In Ordnung Leute, willkommen zurück. Also haben wir unser SDK installiert und der nächste Schritt ist die Installation von Visual Studio Code. Oder Visual Studio Code ist eine sehr flexible und leichte IDE uns von Microsoft zur Verfügung gestellt wurde. Darüber hinaus ist es kostenlos und plattformübergreifend, sodass wir es auf Mark, Windows oder Linux verwenden können . Ich verwende einen Windows-Computer, also würde ich natürlich mit dem Herunterladen für Windows fortfahren, aber stellen Sie sicher, dass Sie den auswählen , der am besten geeignet ist, wissen Sie, das Herunterladen und Installieren ist sehr einfach. Sie erhalten ein MSI-Paket. Sobald Sie darauf doppelklicken, starten wir das Installationsprogramm . Nach ein paar Klicks installiert es alle Binärdateien und befindet sich auf Ihrem Computer. Und nur als Vorschau, das ist es, was Sie erwarten können. Du kannst so etwas erwarten. Ich habe das jetzt schon eine Weile installiert und habe eine Menge verschiedener Projekte verwendet. Sie können also sehen, dass ich einige Symbole habe , die Sie möglicherweise nicht sofort einsatzbereit haben. Wenn dies zum Beispiel Ihr erstes Mal ist, haben Sie möglicherweise nichts unter dem neuesten Stand. Aber Sie können jederzeit Open File, Open Folder starten , Sie können true. Und ich bekomme das Repository auf deinen Computer. Und dann zur Seite haben Sie das Explorer-Fenster. Du kannst suchen, du kannst ein paar Sachen zur Quellcodeverwaltung machen. Sie können ausführen und debuggen. Dann haben Sie Remote Explorer und Erweiterungen. Und dann ist die andere Sache, dass ich hier einige andere Plugins habe, die ich von Nebenprojekten für diesen Kurs habe. Diese sind nicht unbedingt erforderlich. Aber ich werde darauf achten, auf die Dinge hinzuweisen, die Sie im Laufe der Zeit benötigen und darauf, wie Sie Ihre Umgebung einrichten und für das Projekt optimieren können darauf, wie Sie Ihre Umgebung einrichten und für das Projekt optimieren , an dem wir arbeiten werden. Sobald Sie Visual Studio Code installiert haben, können Sie loslegen. Es hat viele eingebaute Funktionen , die wir unterwegs erkunden werden. Wenn Sie jedoch die Idee bevorzugen, Visual Studio zu verwenden, da der Visual Studio-Code erfordert, dass wir viele Befehle für die Befehlszeilenschnittstelle verwenden. Und Visual Studio hilft Ihnen tatsächlich gut dabei, sich einfach umzusehen und einige dieser Dinge zu erledigen. Ich werde Ihnen also zeigen, wie Sie Visual Studio 2022 installieren, und das werde ich in der nächsten Lektion sein. 5. Alternative – Visual Studio 2022 installieren (Windows und Mac): Ordnung Leute, in dieser Lektion werde ich Sie einfach durch ein ganzes Wochenende führen, um Visual Studio auf unserem Computer einzurichten . Visual Studio ist die Flaggschiff-IDE. Und ID ist die Abkürzung für integrierte Entwicklungsumgebungen, wie die Flaggschiff-IDE, die uns von Microsoft zur Verfügung gestellt wurde. Es ist eine verbale vollständige IDE. Es ermöglicht uns, alles von der Konzeption die Implementierung bis hin zur Lieferung unserer Anwendung zu tun. Und es ist für mehrere Betriebssysteme verfügbar , während mehrere, also Windows und Mac OS dafür, tatsächlich von dieser Website , Visual studio.microsoft.com, Sie könnten tatsächlich gehen rüber , um auch Visual Studio Code herunterzuladen , den plattformübergreifenden kleinen Bruder von Visual Studio. Wenn Sie jetzt Visual Studio erhalten möchten, haben Sie drei Optionen. Sie haben die Community Edition, Professional und Enterprise, Communitys, kostenlos für Open Source und einzelne Lernende oder akademische Zwecke. Und dann sind professionell und unternehmerisch eher für Unternehmen oder für kommerzielle Entwicklungspraktiken. In Ordnung? , Wir werden also zu jedem Zeitpunkt für diesen Kurs einfach die Community nutzen da dies eine Lernerfahrung für uns alle ist. Sie helfen Ihnen bei der Auswahl des für Sie am besten geeigneten Tools. Und ich bin mir sicher, dass sie bei zyklischen Notizen Visual Studio Code für Linux vorschlagen werden. Aber wenn ich dann Mark wählen würde und dann anfange, einige Dinge auszuwählen , basierend auf dem, was ich auswähle den MAC von Visual Studio Code. Oder sie sehen möglicherweise Visual Studio für Mac. Und wenn ich mich dann höchstwahrscheinlich für Windows entscheide, egal für was ich mich entscheide, heißt es, Visual Studio ist die beste Wahl, okay, aber nicht für Java. In Ordnung? Dies kann Ihnen also helfen , eine Entscheidung zu treffen , welche Tools für Sie besser sein könnten. Davon abgesehen ist Visual Studio Code, wie gesagt, etwas kompakter, benötigt also weniger Ressourcen und ist einfach einfacher für schnelle Bearbeitungsvorgänge zu verwenden. Visual Studio ist sehr leistungsfähig und wird für viele fortgeschrittene Dinge verwendet. In dieser Lektion werde ich Sie nur durch das führen, was Sie bei der Installation von Visual Studio erwarten können . Also, wann möchten Sie zuerst Visual Studio herunterladen. Wenn Sie also die Community herunterladen , erhalten Sie ein Installationsprogramm. Und sobald Sie das Installationsprogramm haben und es gelernt haben, erhalten Sie ein Fenster , das ähnlich wie dieses aussieht. Ich habe es bereits installiert, also zeige ich Ihnen nur einige der Module und die Benutzeroberfläche aussieht und wie Sie von hier aus vorgehen können. Für diesen Kurs benötigen wir wirklich nur das ASP.NET und die Webentwicklung, was wir als Workload bezeichnen. Jede dieser Boxen steht also für unseren Arbeitsaufwand und gibt uns Zugriff auf die verschiedenen Projekttypen, die für verschiedene Arten von Entwicklungsaktivitäten verfügbar sind für verschiedene Arten von Entwicklungsaktivitäten verfügbar , oder? Also asp.net und Webentwicklung, wir werden eine Dotnet-Anwendung Webanwendungen erstellen. Also wollen wir das auf jeden Fall. Und es wird tatsächlich das SDK enthalten. Sdk sowie andere Projektvorlagen. Die Tools, die wir für die Webentwicklung benötigen. Davon abgesehen, wenn Sie an anderen Workloads interessiert sind , z. B. für die Dotnet-Desktop-Entwicklung oder die Dotnet-Maui-Entwicklung. Dann können Sie immer die verschiedenen Workloads übernehmen , die Sie haben möchten. Je mehr Sie ankreuzen, desto mehr Platz nimmt es natürlich auf Ihrer Maschine ein. Also sei sehr vorsichtig. An dieser Stelle benötigen wir jedoch wieder einmal alles, was wir für diesen Kurs wirklich benötigen die Asp.net- und Webentwicklungs-Workloads. Sie können also weitermachen und dann auf Installieren klicken. Dies wird hier angezeigt , anstatt es beim Herunterladen installiert zu haben. Sobald Sie das getan haben, übernimmt Visual Studio alle Tools, die für diesen Workload benötigt werden, und lädt sie herunter. Und dann können Sie Ergebnisse für sie veröffentlichen. Danach. Wenn Sie es starten, werden Sie möglicherweise aufgefordert, sich anzumelden. Sie können also Ihr Live-Konto verwenden falls Sie eines haben, oder Sie können ein Live-Konto erstellen und dieses Konto für Ihre Visual Studio-Installation verwenden . Jetzt nur, um Ihnen eine schnelle Vorschau darauf zu geben, wie die Visual Studio 202-Benutzeroberfläche aussieht. Ich werde einfach mit allen Kabeln weitermachen , sodass nur die Benutzeroberfläche gestartet wird. Und was wir hier haben, wäre ein Solution Explorer, der alle Dateien und Ordner auflistet , die Teil Ihres Projekts sein werden , wenn wir es erstellen. Und du kannst weitermachen und das Projekt bleibt angehängt, nein, weil es leer ist, können wir das Projekt ausführen. Und diese Benutzeroberfläche wird wirklich lebendig, sobald wir da sind, wenn Sie viele Integrationen wie mit Git haben, und wir hier auf unsere GitHub-Inhalte zugreifen können , genauso wie wir das von Visual Studio Code aus tun können. Und wenn Sie Visual Studio verwenden möchten, ist das in Ordnung. den ersten Lektionen werde ich Ihnen die Parallelen zwischen der Verwendung von Visual Studio Code und der Verwendung von Visual Studio zeigen . So kann man zumindest ein Gefühl bekommen , für welches besser sein könnte. Aber für den Großteil des Kurses werden wir Visual Studio Code verwenden, werden wir Visual Studio Code verwenden nur weil es plattformübergreifend ist. Unabhängig davon, welches Betriebssystem Sie verwenden, können Sie also problemlos mitmachen. Das war's für Hollywood Visual Studio einrichten, es ist ganz einfach. Und wenn Sie zu irgendeinem Zeitpunkt mehr Workloads benötigen, können Sie jederzeit zum Installer zurückkehren. Sie können also einfach auf Ihrem Computer nach Visual Studio Installer suchen . Es wird Sie zu diesem Punkt zurückbringen. Und Sie können die Workloads nach Bedarf auswählen oder abwählen. 6. SQL Server Express installieren: Willkommen zum ersten Video in diesem Kurs, Einführung in SQL Server 2017. Und heute werden wir uns mit dem Herunterladen und Installieren dieser Software befassen. Nun, eine Datenbank ist quasi eine logische Sammlung verwandter Daten. Und das war's auf den Punkt gebracht Wenn Sie bereits Erfahrung mit Datenbanken haben, wurde es wahrscheinlich mit Microsoft Access oder MySQL geliefert. Und Sie möchten einfach Ihr Wissen darüber hinaus erweitern. Und selbst wenn Sie keine Vorkenntnisse in Datenbanken haben, ist dies ein hervorragender Kurs, um Sie mit den Fähigkeiten von Datenbanken vertraut zu machen, welche Vorbereitungen getroffen werden müssen und wie Sie Sie Ihre Reise zum Datenbankadministrator beginnen oder einfach nur Daten in einer Datenbank manipulieren, ist, wie ich bereits sagte, wir werden all diese Konzepte mit Microsoft SQL untersuchen Server 2017. Und ich habe es schon auf meinem Bildschirm, die Seite zum Herunterladen. Also habe ich die URL, wie hier beschrieben, in die Klassennotizen aufgenommen . Und das würde Sie dazu bringen, die Microsoft SQL Server 2017 Express-Datenbank-Engine herunterzuladen . Und die kurze Beschreibung ist, dass es ein leistungsstarkes und zuverlässiges Datenbankverwaltungssystem handelt , mit dem Sie einfache Websites und Desktop-Anwendungen erstellen können . Das ist also ziemlich gut, ziemlich anständig ist ein guter Ausgangspunkt. Wenn Sie nicht über diese hochwertige High-End-Maschine verfügen, haben Sie nur eine normale Maschine, Sie möchten einfach loslegen. Dies ist eine hervorragende Option. Es gibt noch weitere Ergänzungen, die Sie wahrscheinlich in Ihrer Recherche sehen würden, aber wenn Sie diesem Link folgen , werden all dieser Lärm und all die anderen Ausgaben dadurch ausgeblendet. Und wir können mit Express beginnen. Sie können fortfahren und auf diesen Download klicken und diesen Download-Vorgang zunächst einleiten. Und dann ist eine weitere Software , an der wir interessiert sind das SQL Server Management Studio. Jetzt ist das Management Studio Ihr Tor tatsächlich mit der Datenbank zu interagieren, die Daten abzufragen und sogenannte Abfragen in einer Sprache mit Cloud SQL zu schreiben . Wir werden zu gegebener Zeit auf all diese Dinge eingehen. Aber vorerst kannst du dieser URL noch einmal in den Klassennotizen folgen . Und wir können einfach auf diese Download-Schaltfläche klicken , um diesen Download zu initialisieren kann eine Weile dauern. Es ist eine ziemlich große Datei. Sobald der Download abgeschlossen ist, werden wir uns erneut treffen und dann den Installationsvorgang durchgehen . Hallo Leute, willkommen zurück. Nachdem unsere Downloads abgeschlossen sind, beginnen wir mit der Installation unserer SQL Express-Engine. Also klicken wir einfach auf diese Installationsdatei, klicken auf Ausführen und dann werden wir mit diesem Installationsbildschirm begrüßt. Wir können auf Basic klicken. Der Kunde würde Ihnen erlauben, bestimmte Funktionen auszuwählen. In dieser Phase müssen wir das nicht tun. Wir können einfach mit Basic weitermachen wir können weitermachen und den Allgemeinen Geschäftsbedingungen zustimmen. Sie können es durchlesen, wenn Sie möchten. Wenn Sie andere Ideen haben, sollten Sie dieses Verzeichnis vielleicht ändern. Andernfalls können Sie es genauso gut als Standard verwenden. Und Sie können hier sehen, dass wir von 6 GB wirklich nur 300 MB benötigen. Also werde ich einfach weitermachen und auf Installieren klicken. Und das kann eine Weile dauern, also werden wir uns wieder treffen, sobald dies abgeschlossen ist. Okay, am Ende dieses Installationsvorgangs werden Sie sehen, dass Sie diese Installation erfolgreich durchgeführt haben. Und dann geben sie dir einige Informationen. Sie geben dir eine Verbindungszeichenfolge. Wenn Sie also eine Anwendung auf der Grundlage dieser Datenbank entwickeln möchten, sollten Sie diesem Teil wahrscheinlich Aufmerksamkeit schenken. Nun, das ist momentan nicht wirklich notwendig. Und sie geben Ihnen nur die Pfade für die Protokolldateien und andere wichtige Teile der Anwendung. Ein weiterer wesentlicher Teil dieses Installationsvorgangs ist, wie bereits erwähnt, die Installation des Sequel Management Server Studio. Dann geben sie Ihnen bei dieser Express Edition-Installation tatsächlich die Option, SSMS installieren zu sagen. Und das wird wirklich Ihren Browser aufrufen und zu, nun, ich habe mir diese Rede vorgestellt, der Link zu dieser Seite ist bereits in den Unterrichtsnotizen enthalten. Und hier, von hier aus, können Sie direkt zum Management Studio herunterladen. Wenn Sie es also noch nicht getan haben, können Sie einfach diesem Link folgen und die Datei bereits herunterladen. Lassen Sie sie sich hier herunterladen. Also werde ich diese Installation einfach initiieren. All dies startet das Installationsprogramm und gibt Ihnen wirklich nur eine Schaltfläche, auf die Sie klicken können, welches installiert ist. Natürlich kannst du diesen Ort ändern, wenn du andere Ideen für den Pfad hast. Andernfalls können Sie es als Standard belassen und einfach auf Installieren klicken. Dies kann auch eine Weile dauern, daher werden wir uns am Ende dieses Prozesses wieder treffen. Okay, unsere Installation ist abgeschlossen und wir müssen nur neu starten, um fortzufahren. Also können wir das einfach schnell machen. Und im nächsten Video werden wir uns ansehen, wie wir anfangen, alles zusammenzusetzen. Was ist eine Datenbank und warum es so wichtig ist, diese Fähigkeit zu erlernen. Bleib dran. 7. Alternative – SQL Server auf Docker installieren (jedes Betriebssystem): Derzeit ist Microsoft SQL Server fast ausschließlich auf Windows-Computern nutzbar. Die vorherigen Installationsschritte sind also möglicherweise nicht gut gelaufen möglicherweise nicht gut gelaufen. Wenn Sie keinen Windows-Computer verwenden , wenn Sie Mac oder Linux verwenden, sich keine Sorgen, es gibt immer noch eine Lösung für Sie. Lösung Nummer eins wäre , dass Sie eine virtuelle Maschine verwenden können, sodass Sie VMware oder ein anderes Tool verwenden können , das Virtualisierung unterstützt. Und Sie können eine virtuelle Maschine einem Windows-Betriebssystem einrichten und dieses dann verwenden. Wisse, dass das ressourcenintensiv sein kann. Und ich werde Sie nicht all das durchmachen lassen, nur um die eine Software zu verwenden. Die Alternative zu einer virtualisierten Umgebung für Windows wäre die Verwendung von Docker, was ich auf meinem Bildschirm habe. Dunkler, du kannst ganz einfach hierher gelangen, indem du zu docker.com gehst. Darker ist eine sehr schnelle Anwendung, mit der wir sogenannte Container anstelle einer gesamten virtualisierten Umgebung verwenden können wir sogenannte Container anstelle einer gesamten virtualisierten Umgebung verwenden . Was wir also tun können, ist Docker zu verwenden , um die benötigte Umgebung zu simulieren und nur die Umgebung, die für die Ausführung einer bestimmten Anwendung erforderlich Ausführung einer bestimmten Anwendung ohne dass das gesamte Betriebssystem benötigt wird. Was wir also tun werden, ist Docker zu verwenden, um eine Umgebung für SQL Server zu simulieren. Und dann können wir eine Verbindung zum SQL Server herstellen, nur um zu sehen, auch wenn Sie keinen Windows-Computer verwenden. Nun, das Erste, was Sie bemerken werden, ist, dass es für jedes Betriebssystem verfügbar ist , ziemlich richtig? Wenn Sie also Windows verwenden, können Sie immer noch Docker verwenden. Wenn Sie ein Apple-Gerät oder Linux-basiertes Gerät oder ein Gerät mit einem Intel-Chip haben, können Sie dasselbe tun. Wir installieren Docker. Also mach weiter, lade es herunter und installiere es. Ich habe es bereits auf meinem Windows-Computer installiert, aber sobald Sie es installiert haben, erhalten Sie Zugriff auf die Docker-Befehlszeilenbefehle. Sobald Sie es installiert haben, klicken Sie auf Pause, lassen Sie es installieren und dann können Sie fortfahren. Ich würde Sie ermutigen, Ihr Terminal zu starten. Also noch einmal, ich verwende einen Windows-Computer, aber Ihr Terminal unter Linux oder Mac OSX würde diesem sehr ähnlich aussehen. Und Sie können einfach den Befehl docker ausführen , um sicherzustellen, dass er installiert ist. Und wenn Sie etwas sehen, das so aussieht, hatten sie keinen Zugriff auf die Docker-CLI-Befehle. Ordnung, was wir an dieser Stelle tun wollen , ist einen Befehl namens Docker auszuführen. Pull ist ein bisschen vergrößert, damit es besser lesbar ist. Also machen wir Docker, Pull, Docker Pull. Wir werden das, was wir Image nennen, ziehen. Docker verfügt also über vordefinierte Dateien, die die Umgebung auskleiden, die für eine bestimmte Anwendung benötigt wird. Und diese werden Bilder genannt. Das Bild, das wir wollen, ist das Microsoft MS SQL Server-Image. Also machen wir einen Docker, ziehen das Bild an, sodass Sie auf Pause klicken können. Stellen Sie sicher, dass Sie es genauso eingeben, wie ich es habe. Und wenn Sie die Eingabetaste drücken, wird weitergemacht und gesagt: Okay, ich erhalte die neueste Version und dann sehen Sie das Herunterladen. Ich habe das Bild bereits abgerufen, also habe ich es bereits auf meinem Computer. Aber Sie werden sehen, dass es zieht und dann werden Metriken angezeigt, wenn es fertig geladen ist. Und es würde tatsächlich eher so aussehen. Das ist also ein Screenshot, den ich zuvor gemacht habe, als ich ihn heruntergeladen habe. Und du wirst sehen, dass es diese Reihe von Zeilen hervorbringen wird , die diesem ähnlich aussehen. Und du wirst diese Download-Tags haben. Sobald das abgeschlossen ist, der nächste Schritt darin, es tatsächlich auszuführen. Um es auszuführen, benötigen Sie diesen Befehl. Also sagen wir Docker, run, dann Bindestrich e und schon akzeptiert die EULA das. Was also passiert, ist, dass SQL Server normalerweise eines dieser Dokumente enthält , die Sie benötigen, um die Allgemeinen Geschäftsbedingungen zu akzeptieren. Also geben wir es einfach in einen Parameter ein, dass wir die Allgemeinen Geschäftsbedingungen akzeptieren. Und dann noch einer , der SA-Passwort sagt. Wenn Sie sich also den Installationsvorgang ansehen, während wir Windows verwenden, können wir die Windows-Authentifizierung verwenden um eine Verbindung zur Datenbank herzustellen, oder? Also alles was wir brauchen ist ein Maschinenname. Wir können einen Windows-Benutzer, den aktuellen Windows-Benutzer, die Windows-Authentifizierung verwenden den aktuellen Windows-Benutzer, die Windows-Authentifizierung und einfach eine Verbindung herstellen. Da das jetzt dunkler ist und es ein Container ist, gibt es keine Fenster oder Türen oder Mark oder es gibt keine Linux-Authentifizierung. Es ist also nicht wirklich so, dass Sie einfach mit dem Standardbenutzer auf Ihrem Computer eine Verbindung herstellen können. Dieser Schritt gilt also unabhängig davon, ob Sie Windows, Mac, Linux usw. verwenden. Wir müssen also ein SA-Passwort angeben. AC ist also der Standardbenutzer, was Systemadministrator oder Systemadministrator bedeutet. Jedes Mal, wenn Sie eine Datenbank-Engine für Microsoft SQL Server installieren , erhalten Sie diesen Essay-Benutzer. Wir werden diese SA einrichten, Passwort. Und Sie können jedes beliebige Passwort eingeben. Ich gebe hier nur ein sicheres Passwort ein. Und das ist wirklich möglich , dass Sie es in anderen Demos sehen , die Sie sich überall im Internet ansehen könnten . Dieses Passwort ist also nicht unbedingt für mich oder diese Übung einzigartig. Sie können einen beliebigen Passwortwert eingeben , mit dem Sie sich wohl fühlen. Und du erinnerst dich, ich teile das Wort sicheres Passwort natürlich mit Zeichen, Ziffern und ein paar Großbuchstaben auf. Dann geben wir den Port an. Der Hafen hier vorne ist wichtig , den wir durchqueren wollen. Der Hafen. Am anderen Ende des Doppelpunkts befindet sich der Port, dem er zugeordnet werden soll. Das bedeutet, dass der SQL-Server standardmäßig von Port 1433 sendet, das ist der Standardport. Also ohne etwas zu tun, irgendwelche Ports oder irgendetwas anzugeben, wird 1433 immer einmal durchlaufen oder eine Verbindung hergestellt. Docker läuft jedoch in einer eigenen speziellen Umgebung, daher müssen wir eine Karte erstellen. Dies ist der Standardport, und dann ist dies die Port-Maschine , die einen Tunnel durchlaufen möchte, um zu diesem Sport zu gelangen. Also könntest du das eigentlich einfach als 14331433 belassen. Wenn Sie nicht möchten, dass SQL Server bereits installiert ist und Sie Mac und Linux ausführen, dann ist 14, 14, 33 in Ordnung. Du musst nichts extra tun . Sie können einfach eine Verbindung herstellen. Allerdings, weil ich einen Windows-Computer verwende und hinzufüge, um meinen Port zu ändern, weil 1433 bereits von meiner nativen SQL Server-Installation belegt ist . Also zeige ich dir nur , dass du standardmäßig 14, 14, 33 machen kannst . Oder Sie können Ihren eigenen spezifischen Port angeben, wenn Sie dies wünschen. Dann sagen wir als Nächstes und letztes Bindestrich D und geben dann das Bild an, das wir ausführen möchten. Im Grunde sagen wir also, dass Docker dieses Image ausführt und sicherstellt, dass all diese Parameter dazwischen konfiguriert sind. Das ist im Wesentlichen das , was wir gerade getan haben. Wenn Sie also die Eingabetaste drücken und nur Sie diese ausführen, wird das Bild in der dunkleren Benutzeroberfläche gestartet . In der dunkleren Benutzeroberfläche wirst du etwas sehen, das so aussieht. Es wird unter Containern erscheinen. Und Sie können hier sehen, wie mehrere Container sind, oder? Ich habe sogar einen anderen SQL-Container , der Salz von früher hinzufügt. Und hier ist der neue von meinem Befehl, den ich gerade ausgeführt habe. Also erstellte er einen brandneuen Container für Microsoft SQL Server. Und es läuft gerade und es läuft seit 30 s. Und der Port, den es verwendet, ist 1.400. den es verwendet, ist 1.400 Wenn Sie das nicht ändern und den Standard 1433 verwenden , wäre es 1433. Sie können die Container jederzeit anhalten und starten. Sie können auch löschen und beobachten, was passiert. Sie können es also im Terminal öffnen und hier damit interagieren. Sie können auch den Zustand überprüfen und sich einige Konfigurationen ansehen. Dies sind also einige der Umgebungsvariablen , die wir eingerichtet haben. Was sind die Parameter , die wir übergeben? Dann kannst du dir auch die Logs ansehen. Sehen Sie hier, dass es anscheinend erfolgreich gestartet wurde. Nachdem ich all diese Dinge jetzt bestätigt habe, möchte ich eine Verbindung herstellen. Jetzt können wir für Windows das Microsoft SQL Server Management Studio verwenden . Management Studio ist jedoch nicht unbedingt auf Linux und Mac verfügbar. Die Alternative hier wäre also, sich das Azure Data Studio zuzulegen. Sie können einfach eine Google-Suche durchführen und der Microsoft-Dokumentation bis zum Azure Data Studio folgen . Data Studio ist ein plattformübergreifendes Datenbanktool für Profis. Und es kann unter Windows, macOS, Linux funktionieren. Sie können also weitermachen und die entsprechende Version für sich selbst installieren . Und natürlich können Sie sich alle Warnungen ansehen, um sicherzustellen, dass Sie sich in einem kompatiblen Zustand befinden. In Ordnung? Die Sache ist also, dass das Data Studio die meisten Dinge tun kann , die das Management Studio kann, insbesondere im Rahmen dieses Kurses, in dem wir über Datenbankentwicklung und Abfragen lernen und solche. Die Erfahrung wird etwas anders sein. Bestimmte Dinge werden also nicht am selben Ort sein und möglicherweise nicht dasselbe genannt werden. Rüber, um eine Verbindung herzustellen. Lassen Sie mich Ihnen nur zeigen, wie wir uns verbinden. Sie können also sehen, dass ich im Laufe der Zeit ziemlich viele Ups angeschlossen habe oder es braucht eher eine Basis, aber hier werde ich Microsoft SQL Server verbinden und dann wird der Server hier ein lokales Hostkomma sein, der von Ihnen angegebene Port. In meinem Fall habe ich 1.400 auf meiner Veranda angegeben. Möglicherweise haben Sie auch 1.400 oder was auch immer Sie angegeben haben , angegeben. Wenn wir eingestellt haben, sollte der Container laufen und wenn Sie sich nicht erinnern, können Sie einfach nochmal rübergehen und nachschauen. Sie geben diesen Port an. Und dann nicht Windows-Authentifizierung, sondern SQL-Anmeldung. Und unser Benutzername ist SE und unser Passwort ist das Passwort, das wir eingegeben haben. Und noch einmal, wenn Sie sich nicht erinnern, wie das Passwort lautet, können Sie jederzeit zum Container gehen und dann auf Inspect klicken. Und ich kann diesen Wert einfach kopieren und dann einfügen. Und dann erinnerst du dich für die Zukunft einfach an dein Passwort. Dann können wir uns verbinden. Dann ist dies ein Zeichen für eine erfolgreiche Verbindung. Ich, du siehst hier die Betriebssystemversion, also bin ich immer noch auf meinem Windows-Computer. Die festgestellte Betriebssystemversion ist jedoch Ubuntu. Das ist es also, was der Container tut. Es läuft in einer Linux-Umgebung, simuliert aber die Umgebung, genau die Umgebung, die benötigt wird damit SQL Server ausgeführt werden kann. Wenn ich Datenbanken erweitere, wirst du sehen, dass sie leer sind. Und dann können wir im Grunde alles, was wir vom Management Studio aus tun können, von hier aus tun. Eine Sache, die Sie vielleicht bemerken, ist, dass einige der Werkzeuge begrenzt sind. Im Management Studio kann ich also einfach oder einfacher mit der rechten Maustaste klicken und sagen, bestimmte Dinge tun, z. B. eine neue Datenbank erstellen und so weiter. In der Verwaltung im Data Studio wird es jedoch wahrscheinlich skriptgesteuert werden müssen. Es ist etwas , das Sie kontrollieren müssten und erstellt eine neue Skriptdatei. Und um dann eine neue Datenbank zu erstellen, müssten Sie „Datenbank erstellen“ sagen. Und dann gib den Namen an, sagen wir test db, dann F5, und dann wird es geworfen. Also dann kannst du die Liste der Datenbanken aktualisieren und dann siehst du TSDB, oder? In diesem Kurs werden wir uns jedoch mit der Ausführung beider Skripts und der Verwendung der grafischen Benutzeroberfläche in Management Studio befassen. Sie sollten also in der Lage sein, das ganz gut zu verfolgen. Und wenn Sie auf Schwierigkeiten stoßen, können Sie sich auf jeden Fall gerne an uns wenden. 8. Microsoft Data Studio installieren: Hallo Leute. In dieser Lektion werden wir uns ansehen, wie wir Azure Data Studio herunterladen und installieren können . Nun, der Name ist irreführend , weil er mit Azure beginnt, aber es ist kein Tool, das nur in Azure verfügbar ist. Es ist ein plattformübergreifendes Tool für das Datenverwaltungssystem, dem wir eine Verbindung zu jeder Art von Datenquelle herstellen können. Nun, zumindest die Microsoft SQL Server-Datenquellen, unabhängig davon, ob sie lokal gehostet werden, werden in Microsoft Azure gehostet. Es gibt noch andere Dinge, die wir mit dem Tool tun können, aber wir werden sie in diesem Kurs nicht unbedingt tun. Der Grund, warum wir uns für dieses Tool entscheiden, ist jedoch die Tatsache, dass es sich um ein plattformübergreifendes Datenbanktool handelt, dem wir unter Windows, Mac OS oder Linux arbeiten können . Denken Sie also daran, dass wir uns um die plattformübergreifende Entwicklung kümmern. Deshalb versuche ich, Ihnen alle Tools zu zeigen , die uns helfen können, unsere Ziele zu erreichen, unabhängig von unserem Betriebssystem. In Ordnung, also um loszulegen, können Sie eigentlich einfach Google Data Studio und Sie können wahrscheinlich, oder Sie können sagen, ein Studio ohne Daten herunterladen. Und es führt Sie zu dieser Website, die sich auf Microsoft Learn befindet. In Ordnung. Und von hier aus können Sie zu den verschiedenen Download-Optionen nach unten scrollen. Für Windows haben wir also diese Optionen. Und das Benutzerinstallationsprogramm ist ein einfaches Installationsprogramm, das der Installation mit Visual Studio Code sehr ähnlich wäre . Wir haben den macOS-Installer und wir haben die Linux-Methode, um die Dateien auf unser System zu übertragen. Wenn du also Schlag für Schlag pro Anweisung oder Geld benötigst , kannst du tatsächlich nach unten scrollen und schon siehst du hier den Abschnitt für die Windows-Installation. Und Sie können sehen, dass Sie einfach das Installationsprogramm für Windows herunterladen und mit der Einrichtung fortfahren können . Oder Sie können eine Zip-Datei herunterladen und an einem Ort entpacken und sie dann direkt von dort aus verwenden. Ordnung, ich scrolle einfach durch die Option und hier ist der Installationsabschnitt für MAC OS. Und dann ist hier der Linux-Installationsbereich. Am Ende erhalten wir jedoch eine Anwendung , die so aussieht. Wenn du es bekommst, kannst du dein Thema und alles andere ändern. Bei mir läuft das Dark Theme. Sie können dieses Farbthema jederzeit ändern, wenn Sie möchten. Aber letztendlich ermöglicht es uns , eine Verbindung zu jeder Art von Datenquelle herzustellen. Und hier habe ich ein ausstehendes Update. Das mache ich später. Wir können unsere verschiedenen Server jedoch verbinden unabhängig davon, ob sie sich auf einem lokalen Host befinden. Diese Standardeinstellung ist also mein lokaler Host, die SQL Express-Instanz. Ich habe auch eine Docker-Instanz zur Verfügung, jetzt mehrere Instanzen bei Microsoft als Juris, alle meine Server sind genau da. In Ordnung? Und wir können ein paar coole Dinge tun. Wir können suchen, wir können ein paar Notizbücher machen und Sachen zur Quellcodeverwaltung und Erweiterung erforschen. Wie gesagt, es hat andere eingebaute Tools für andere verwandte Aktivitäten, auf die ich nicht eingehen werde. Aber im Moment ist es einfach ein Tool, mit dem wir unsere Abfragen schreiben können. Wir können unsere Datenbank ganz einfach erstellen. Ordnung, also wenn wir zurückkommen, werden wir tatsächlich mit der Entwicklung beginnen. 9. ASP.NET Core MVC erstellen – Visual Studio: Willkommen zurück, Leute. In dieser Lektion werden wir unsere asp.net Core MVC-Webanwendung erstellen . Nun sollten Sie als Erstes Ihr Terminal starten. Terminal kann je nach Betriebssystem, das Sie verwenden, anders aussehen . Wenn Sie Linux verwenden, sieht es anders aus, als wenn es nicht markiert ist. Nun, zu oft wird es tatsächlich ziemlich ähnlich aussehen. Wenn Sie sich jedoch auf einem Windows-Computer befinden, möchten Sie entweder nach PowerShell oder Command Prompt suchen . Ich verwende einen Windows-PC, also habe ich tatsächlich dieses Fenster, das Terminal heißt, und es gibt mir tatsächlich Zugriff auf die verschiedenen Arten von Terminals, die ich auf meinem Computer habe. Sie sehen hier, ich habe einen Tab namens Windows PowerShell, einen anderen Tab namens Command Prompt. Auch wenn Sie ein Fenster haben, das nicht unbedingt so aussieht, können Sie alles tun, was wir tun werden, wenn Sie einen Windows-Computer verwenden, indem Sie die Eingabeaufforderung verwenden, so oder so, genauso Befehle, die wir auf meinem Computer ausführen werden, funktionieren auf jedem Betriebssystem. Also schließe ich einfach einen dieser Tabs und verwende einfach das PowerShell-Fenster. Und zunächst möchten wir sicherstellen, dass wir es installiert haben. Wenn Sie nur Dotnet und dann Bindestrich und Bindestrich sagen , dann sehen Sie einen schönen kleinen Druck oder so, der alle Dotnet-Laufzeiten anzeigt , die Sie installiert haben. Ich mache die Dotnet-Entwicklung auf dieser speziellen Maschine, seit 3.1 das Richtige war. Du siehst hier, dass ich fünf und ich auch sieben habe. Und wenn Sie hier nach unten schauen, werden Sie sehen, dass ich auch Zugriff auf Versionen von sechs habe. Ordnung, das ist also ein Beweis dafür , dass Dotnet erfolgreich installiert wurde und Sie sicherstellen möchten, dass Sie sieben haben, weil wir sieben verwenden werden. Wenn Sie jedoch sechs installiert haben und verwenden möchten, 90% dessen, was wir tun können mit sechs funktionieren, wo es einen Unterschied gibt. Ich werde darauf hinweisen. Jetzt, da wir überprüft haben, dass Dotnet installiert ist und wir Zugriff auf die Dotnet-CLI haben. Was wir jetzt tun müssen, ist, dass ich es nur etwas größer machen werde , damit die Befehle besser sichtbar sind. Was wir tun müssen, ist zu einem Verzeichnis zu navigieren , von dem wir wissen, dass wir unser Projekt haben möchten. Und dann werden wir unsere neue Dotnet-Anwendung erstellen. Ich sage einfach CLS, um die Eingabeaufforderung zu löschen. Und dann wieder der größere. Jetzt können wir zu dem Ordner navigieren, der ungefähr wie cd aussieht, und dann wählst du dein Ziel. Ich habe also einen speziellen Ordner auf meinem C-Laufwerk, den ich für Projekte verwende. Also kann ich zu diesem Verzeichnis navigieren. Und dann führe ich einen Befehl aus, der sagt dots net new MVC. Und dann habe ich mir einen Bindestrich angesehen, oder dieser Bindestrich 0 bedeutet wo möchte ich dieses Projekt platzieren? Also wollte ich einen neuen Ordner erstellen. Wenn ich das nicht mache, wo immer ich bin, wird ein Ordner erstellt. Sie hätten also einen Ordner für sich selbst erstellen können, sei es über Ihre Benutzeroberfläche oder Ihre Befehlszeile. Und bevor ich darauf eingehe, lassen Sie mich Ihnen nur zeigen, wie Sie das erstellen würden , wenn ich MK dir Verzeichnis sagen und ihm dann einen Namen geben würde, sagen wir, teste MVC auf. Dann würde es das schaffen. Dann könnte ich CD sagen , um die MVC App zu testen. Und Sie sehen hier, dass es sich um eine Reihe von Ordnern handelt. Und dann könnte ich einfach Dotnet sagen, neues MVC. Und dann würde das bedeuten, ein brandneues asp.net Core Web Up unter Verwendung der Model View-Controller-Vorlagen zu erstellen. Das ist es also, was MVC bedeutet, nur für den Fall, dass das vorher nicht klar war. Und sie lassen Sie wissen, dass es erfolgreich erstellt wurde. Sie teilen Ihnen also mit, dass sie das Projekt auf diesem Weg erstellt haben . Und sie gaben dem Projekt den gleichen Namen wie dem Ordner, in dem es erstellt wurde. In Ordnung, das ist also eine nette, saubere Art , ein neues MVC-Up zu erstellen. Wir werden jedoch nicht an MVC arbeiten, also mache ich einfach cd dot dot, wodurch ich wieder ein Verzeichnis öffne und ich meinen Bildschirm erneut von allen Nachrichten löschen kann. Dieses Mal einfach im Vollbildmodus. Und dann lassen Sie uns das von Anfang bis Ende machen . Wenn ich also eine brandneue Dotnet-MVC-Anwendung haben möchte, sage ich dotnet new MVC, und dann sehe ich es als Bindestrich oder nicht Null, sondern alles und gebe ihr dann den Namen des Verzeichnisses. In diesem Kurs werden wir nun eine sehr kleine Schulleitung aufbauen . Gerade genug, um einer kleinen Schule zu helfen , die Schüler, die Lehrer, von den Kursen, die sie anbieten, fernzuhalten , oder? Also sage ich einfach, Schulmanagement läuft, okay? Dann sage ich einfach MVC, nur damit wir wissen, dass dies mit Sicherheit ein MVC ist. Und wenn ich dann die Eingabetaste drücke, mache ich weiter und erstelle das neue Verzeichnis, School of Management App Punkt MVC. Und dann erstellt der neue Direktor die zugehörige Projektdatei. In Ordnung, das ist also eine andere Art, wie wir es machen könnten. Wir könnten einfach Dotnet, neuer MVC-Bindestrich sagen und dann den Projektnamen angeben. Es wird sowohl die Verzeichnis- als auch die Projektdatei in einem Durchlauf ausführen. Jetzt, wenn wir dieses Projekt öffnen wollen, haben wir eine nette Tastenkombination, mit der wir stattdessen eine andere Befehlskombination verwenden können. Also wenn ich zu diesem Ordner navigiere und ich Schulverwaltung von MVC sage, also CD, springt da rüber. Und dann kann ich Codepunkte sagen. Schau dir an, was passiert. Dies ist der Fall, wenn Sie Visual Studio-Code verwenden. Sobald Sie also Visual Studio Code haben, haben Sie diese Umgebungsvariable in Ihrer Befehlszeile. Sobald Sie Code, Punkt, sagen, öffnet sich Visual Studio Code im Kontext des Ordners, zu dem Sie gerade im Terminal navigiert haben. Und tatsächlich sind wir mit Visual Studio Code da und hier sind alle Dateien, die in diesem bestimmten Verzeichnis erstellt wurden . Natürlich kann er navigieren, sie benutzen deinen Explorer, wenn du willst. Aber im Moment ist dies ein ausreichender Beweis dafür, dass unsere Bemühungen zur Projekterstellung erfolgreich waren. Ich werde keine Erweiterungen oder so durchgehen. Ich wollte Ihnen nur zeigen, wie Sie mithilfe der CLI ein brandneues MVC erstellen und es mit Visual Studio Code vollständig öffnen würden der CLI ein brandneues MVC erstellen mithilfe der CLI ein brandneues MVC erstellen und . Wissen Sie, kurz bevor wir diese Übung abschließen, wollte ich nur darauf hinweisen , dass es mehrere gibt. 10. ASP.NET Core MVC erstellen – Visual Studio: In Ordnung, also haben wir uns angesehen, wie wir mit der Dotnet-CLI ein neues Projekt erstellen können. Und das gilt wirklich für jedes Betriebssystem, insbesondere wenn Visual Studio auf Ihrem Betriebssystem nicht unterstützt wird. Wenn Sie jedoch Visual Studio für die Entwicklungsübungen verwenden möchten , gehen wir nur die einfachen Schritte durch, um ein ähnliches Projekt mit Visual Studio zu erstellen . Visual Studio ist eine sehr leistungsstarke IDE uns von Microsoft für die Dotnet-Entwicklung zur Verfügung gestellt wurde. Und es steckt voller Funktionen , die Sie benötigen. Viele Erweiterungen und viele Add-Ons mit anderen Tools, um wirklich die gleichen Leistungen zu erzielen. Davon abgesehen sind andere Tools in der Lage und die Ressourcen dazu sind sofort einsatzbereit. Hinweis auf der linken Seite, Sie werden sehen, dass ich eine Liste der letzten Projekte habe . Wenn Sie Visual Studio zum ersten Mal verwenden, haben Sie möglicherweise nicht so viel Leben auf dieser Seite. Das ist in Ordnung. Wir möchten uns jedoch auf den Abschnitt Erste Schritte konzentrieren, damit wir zunächst unser Repository klonen, ein vorhandenes Projekt oder eine Lösung oder einen Ordner öffnen können , in dem möglicherweise ein vorhandenes Projekt vorhanden ist, oder wir kann ein neues Projekt erstellen. Wir können auch ohne Code weitermachen. Ich denke, wir haben diese Option gewählt, wir uns Visual Studio das letzte Mal ansehen. Dieses Mal sagen wir jedoch Neues Projekt erstellen. Und dann werden eine Reihe von Projektvorlagen geladen . Basierend auf den Workloads, die Sie für Visual Studio ausgewählt hätten , haben Sie möglicherweise mehr oder weniger Workloads als ich hier habe. In Ordnung? Die wichtigste ist die, bei der Erstellung, nämlich MVC weiß, dass dies eine riesige Liste ist wir nach den Sprachen filtern können. Wir wollen also nur C-Sharp-Vorlagen sehen. Vielleicht wollen wir nur Vorlagen für unsere spezielle Art von Plattform und für bestimmte Projekttypen sehen Vorlagen für unsere spezielle Art von , oder? Oder wir können einfach suchen. Also ich weiß, dass ich MVC will, ich kann einfach nach MVC suchen. Und dann geben sie mir hier die Web-API. Nein, das will ich nicht. Und dann sehe ich hier, dass sie mir eine Web-App mit dem MVC Model View Controller geben . Also das ist die, die ich auswählen werde. Wählen Sie Weiter. Und dann werden sie mich fragen, okay, wie sollte das Projekt heißen? Das wird also in ein anderes Standardverzeichnis als meine vorherigen verschoben. Also gebe ich ihm denselben Namen nur um ein gewisses Maß an Konsistenz zu zeigen. In Ordnung, also Schulleitung Punkt MVC. Und dann kann ich auf Weiter klicken. Dann wird es mich nach dem Framework-Typ fragen. Wir haben also bereits die Tatsache durchgemacht , dass wir verschiedene Arten von Frameworks haben oder möglicherweise verschiedene Frameworks installiert haben. Und was wir in diesem Kurs tun werden, lassen Sie uns suchen, können es ab sieben tun, können es tun, wo es einen Unterschied gibt. Ich würde auf jeden Fall darauf hinweisen. Aber für diesen Kurs verwenden wir Dotnet Seven und können einen Standardauthentifizierungstyp wählen. Nun, dies sind Optionen, die wir in der CLI hätten bereitstellen können, da ich in der CLI keine Optionen angegeben habe. Ich werde hier nichts extra tun. Stimmt das? Und ich werde keines dieser Dinge tun. Was ich tun werde, ist einfach auf Erstellen zu klicken. Nachdem Sie auf Erstellen geklickt haben, wird unser Visual Studio mit unseren Projekten geöffnet. Wir haben also standardmäßig den Solution Explorer, dieses Panel befindet sich tatsächlich auf der rechten Seite. Aber ich finde es einfacher , es zu benutzen, wenn es auf der linken Seite ist. Sie können diese Panels also tatsächlich ziehen und an einer beliebigen Stelle platzieren. Natürlich ist links oder rechts normalerweise ein guter Ort, um so etwas zu haben, das Ihnen alle Dateien zeigt, aber ich hätte es gerne auf der linken Seite. In Ordnung? Sie haben auch Zugriff auf die integrierten Datenbankverwaltungstools. Mit Visual Studio benötigen Sie also nicht einmal das Data Studio, da Sie von hier aus eine Verbindung zu Ihrer Datenbank herstellen können . Und Geld, bis zu einem gewissen Grad, Abfragen ausführen, neue Tabellen erstellen und nach Bedarf als Datenbankobjekte. Okay, Visual Studio ist also sehr leistungsfähig und wenn Sie es ausführen möchten, können Sie entweder F5 auf Ihrer Tastatur drücken oder Sie können oben auf diese Schaltfläche „ Ausführen“ klicken, die die Buchstaben HTTPS hat. Wenn Sie jedoch Dotnet Six verwenden, wird in den Buchstaben möglicherweise kein HTTPS angezeigt. Sie haben vielleicht nur den Namen des Projekts, wo Sie hier HTTPS sehen, es würde heißen, Schulleitung Punkt MVC, und das ist in Ordnung. Beide werden dasselbe tun. Es ist nur eine Frage, wie sie in diesen Starteinstellungen klassifiziert oder aufgerufen werden , dieser JSON-Datei, in der sie die verschiedenen Profile skizziert. Sie haben also ein HTTP-Profil , das auf einem HTTP-Setup ausgeführt wird. Dann ist es auch standardmäßig mit HTTPS ausgestattet, das mit HTTPS-Einstellungen ausgeführt wird. In Ordnung? Möglicherweise erhalten Sie auch eine Aufforderung, dem Zertifikat, den Entwicklungszertifikaten, zu vertrauen . Wenn Sie dazu aufgefordert werden, auf Ja zu klicken. Und ich renne einfach und lass uns sehen, wie das aussehen würde. Es erstellt also das Projekt, das heißt, es wird kompiliert, schaut sich den gesamten Code an und stellt sicher, dass alles gut aussieht. Und wenn dann alles gut aussieht, werde ich es hier starten. Das Terminal, oder ich habe ein Terminal, das auch in Visual Studio läuft. Und es zeigt mir, dass es jetzt den HTTPS-Sport 7212 und den HTTP-Port 5294 abhört . Im Hintergrund. Es hat auch meinen Standardbrowser gestartet, und es hätte standardmäßig den HTTPS-Port verwendet. Und hier ist unsere Webanwendung in Visual Studio ausgeführt wird. Visual Studio ist also wieder einmal sehr leistungsfähig und ermöglicht es uns eine Reihe von Dingen zu erreichen einfach hier und da klicken. Sie geben uns viele Tools und es ist sehr einfach zu navigieren und loszulegen. Aber auch hier unterstützt nicht jeder Computer, nicht jedes Betriebssystem Visual Studio. Wir werden uns also auf die Entwicklung mit Visual Studio Code und der Dotnet-CLI konzentrieren . Ich werde jedoch mein Bestes tun, um die Parallelen auszuführen, bei denen Sie möglicherweise wissen müssen, wie Sie dasselbe mit Visual Studio erreichen können. 11. Visual Studio Tour: Willkommen zurück, Leute. In dieser Lektion werden wir uns ein wenig mit Visual Studio Code beschäftigen, oder? Es ist ein sehr vielseitiger Editor und es ist gut, einfach zu wissen, wo sich die Dinge befinden, und einige der Aufforderungen zu verstehen, die wir im Laufe der Zeit sehen könnten. Also habe ich unser School of Management App Dot MVC-Projekt geöffnet, das wir zuvor erstellt haben. Und wenn Sie unser Projekt öffnen möchten, nehmen wir an, Visual Studio Code wird geschlossen und Sie möchten dorthin zurückkehren. Sie haben die Möglichkeit, die CLI zu verwenden und dort zu navigieren. Oder Sie könnten tatsächlich zu Datei gehen und Ordner öffnen sagen. Und dann können Sie von hier aus zum Ordner navigieren und dann den Ordner auswählen. Und dann hätten Sie dieselbe Erfahrung mit Visual Studio-Code, wir laden einfach alle Dateien, die sich derzeit in dem Ordner in diesem Abschnitt befinden, der Explorer genannt wird. Du kannst diesen Explorer andocken um mehr Platz für deinen Code zu bekommen. Oder Sie können es auf der Seite haben, es kann die Größe nach Belieben ändern. Schreib manchmal, du willst einfach nicht, dass es so offen ist. In Ordnung? Sie haben auch die Möglichkeit , alles zu durchsuchen. Wenn ich also nach dem neuesten MVC suche, werden mir nur alle Orte angezeigt, die angezeigt werden, an denen ich ganz einfach suchen und ersetzen kann. Alle zu ersetzen ersetzt eins nach dem anderen. Natürlich würde ich einen nach dem anderen für Massenoperationen vorschlagen, bei einen nach dem anderen für Massenoperationen denen es zu Konflikten mit dem kommen könnte , wonach Sie suchen, oder? Daher sollten Sie beim Suchen und Ersetzen immer vorsichtig sein , insbesondere bei Massenoperationen. Dann haben wir Zugriff auf die Quellcodeverwaltung. Nun, hier sehen Sie möglicherweise eine Option, die vorschlägt , Git für Ihr Betriebssystem zu installieren. Jetzt bin ich auf Windows. Wenn ich Git nicht schon installiert hätte, würdest du Git für Windows installieren sehen. Denn was passiert, ist, dass Visual Studio Code eine direkte Integration mit Git hat. Und es ermöglicht Ihnen, alles auszuführen Befehle bequem von hier aus abzurufen , ohne dass Sie jemals in die CLI gehen müssen. In Ordnung, also Git-Befehle zu kennen ist cool. Aber mit Visual Studio Code können Sie das irgendwie tun ohne sie genau zu kennen. Sie möchten also weitermachen und auf Ihr Betriebssystem zugreifen. Wir werden GitHub verwenden. Sie sehen hier also, dass es einen schönen großen roten Button gibt steht , dass wir einen GitHub veröffentlicht haben, weil es ein paar Klicks sind. Wir können unser Projekt tatsächlich auf GitHub pushen und das werden wir später tun. müssen wir uns also keine Sorgen machen. Dann gibt es Run und Debug. Run and Debug ermöglicht es uns tatsächlich, unser Projekt auszuführen. Okay, bei unserem Visual Studio-Experiment haben Sie gesehen, dass wir auf die Schaltfläche klicken konnten , und unser Projekt wurde gestartet. Nun, genau das bietet Runner Depot hier an. Wir werden uns ansehen, wie das funktioniert und wie wir es auch in der CLI tun können. Ich wollte den Remote Explorer nicht überspringen. Und das überspringe ich, weil du das wahrscheinlich nicht hast. Dieser Remote Explorer ist eines meiner zusätzlichen Plugins. Und alles, was Sie neben meinem Computer sehen und das Sie nicht sehen auf Ihrem Computer zu entscheiden, bedeutet, dass dies zusätzliche Erweiterungen sind , die ich für meine eigenen Zwecke installiert habe . Ich werde nichts priorisieren, was für Sie nicht unbedingt erforderlich ist , um diesen Kurs abzuschließen. Das nächste große Symbol, auf das Sie achten sollten , wären also Erweiterungen. Unter Erweiterungen sehen Sie nun, dass Sie Zugriff auf die Installation verschiedener Erweiterungen haben, um je nach Bedarf verschiedene Projekttypen zu unterstützen . Also arbeite ich mit Azure. Ich habe ziemlich viele wie deine Erweiterungen installiert, oder? Aber dann habe ich auch Schnipsel für Bootstrap Five, um mir das Leben leichter zu machen. Ich habe auch einen C-Snippet. Und vielleicht haben Sie einige Aufforderungen gesehen , dass je nach Projekttyp eine C-Sharp-Erweiterung erforderlich ist. Also, weil wir ein C-Sharp-Projekt in Dotnet machen werden . Die C-Sharp-Erweiterung ist sehr sinnvoll, da sie Unterstützung für C-Sharp-Codierungssyntax und IntelliSense sowie Autovervollständigung und eine Reihe von Dingen bietet. Ich würde also vorschlagen, dass Sie sich auf die Erweiterung von C-Sharp freuen. Nein. Um eine Erweiterung zu installieren , durchsuchen Sie den Erweiterungs-Marktplatz oben hier oben, und Sie können einfach C sharp schreiben. Und dann wird diese ganz oben auf der Liste stehen, weil es sich um eine offizielle Microsoft-Erweiterung handelt. Du kannst darauf klicken. Wo Sie dann all diese Schaltflächen für mich sehen, würden Sie tatsächlich eine Schaltfläche zum Installieren der Erweiterung sehen. Wenn ich zum Beispiel auf einen klicken würde, habe ich keine Schaltfläche zum Deinstallieren, was Sie sehen würden. Sie können es also installieren und möglicherweise müssen Sie Ihren Visual Studio-Code neu starten. Es gibt eine Reihe praktischer Erweiterungen und Sie sollten sich immer den Herausgeber der Erweiterung ansehen . Und eine Sache, die ich auch verwende, um es zu messen ist, wie viele Downloads es hat. Der Herausgeber ist einer, aber dann die Anzahl der Downloads falls Sie den Herausgeber nicht unbedingt kennen. Die Anzahl der Downloads ist ebenfalls unterschiedlich. Ein sehr guter Indikator für seine Stabilität und wie gut er genutzt wird. Eine weitere Sache, die Sie vielleicht bemerken, und ich glaube, ich habe es bereits erwähnt, ist, dass Visual Studio-Code Ihnen möglicherweise ein kleines Pop-up zeigt , dass Sie bestimmte Erweiterungen erhalten. Installieren Sie bestimmte Erweiterungen basierend auf einem Projekttyp. Mit denen können Sie tatsächlich weitermachen. Visual Studio Code macht nur Vorschläge, um Ihnen zu helfen , basierend auf dem, woran Sie gerade arbeiten, das bestmögliche Erlebnis zu erzielen. Hat eine Reihe von Erweiterungen installiert. Du kannst hier sehen, dass ich 45 Erweiterungen habe. Also gehen Sie einfach in soziale Netzwerke, Visual Studio Codes, Vielseitigkeit, weil ich es für die ARM-Vorlagenentwicklung verwendet habe. Ich habe es für die Angular-Entwicklung verwendet, ich habe es für die Azure-Entwicklung verwendet. Ich habe es für einige Datenarbeitsmappen verwendet , die immer noch Azure sind, oder? Larve, PHP, Python. Dies sind alles Dinge, für die ich es verwendet habe, und für diese Dinge können Sie es in Zukunft verwenden für diese Dinge können Sie es in Zukunft wenn Sie sich weiterentwickeln und verschiedene Wege erkunden möchten. Visual Studio Code ist also fast wie eine All-in-One-IDE für verschiedene Plattformen. Dies ist das erste Mal, dass Sie Visual Studio Code verwenden. Ich ermutige Sie , weiterzumachen und zu prüfen, wie es andere Sprachen und andere Frameworks unterstützt und wie Sie es zu Ihrem Vorteil nutzen können. Nun, eine weitere Sache , die ich möchte, Lassen Sie uns mit den Erweiterungen fortfahren. Eine andere Sache, auf die ich nur hinweisen wollte , bevor wir echten Entwicklung beginnen die Tatsache, dass es über ein eingebautes Terminal verfügt. Also vorher wissen wir alles was wir getan haben, um das Projekt zu erstellen und so weiter. haben wir im nativen Terminal unseres Betriebssystems gemacht. Während wir uns jedoch in Visual Studio Code befinden, möchten wir wahrscheinlich nicht zwischen Fenstern hin- und herspringen . Es hat praktischerweise ein Terminal für uns enthalten. Sie können dorthin gelangen, indem Sie die Tastenkombination verwenden , die hier steht. Oder Sie können natürlich einfach darauf klicken und das öffnet ein Terminalfenster. Und dieses Terminalfenster basiert auf Porsche. Aber rate mal was? Wir haben Optionen. Wir können also tatsächlich mehrere Terminals gleichzeitig laufen lassen. Also könnte ich tatsächlich ein weiteres Terminalfenster hinzufügen. Und wenn ich eine wollte, wäre das nur eine Eingabeaufforderung. Wenn ich eine wollte, wäre das eine Bash und du bekommst Git Bash, sobald wir Git auf deinem Computer installiert haben. Und ich habe es schon einmal erwähnt, aber ich habe es dir nicht gezeigt. Du kannst also gut werden. Sie können also den Bindestrich scm.com aufrufen, oder Sie können einfach googeln. Und ich bin mir sicher, das erste Suchergebnis würde Ihnen diese Website geben. Sie können es unverändert für verschiedene Betriebssysteme herunterladen , auch plattformübergreifend. Sie können also Windows, Mach, und Sie können es für Ihre Linux-Distributionen bekommen. Und es ist eine native Befehlszeilenschnittstelle, oder? Aber dann haben Sie bestimmte Tools , die Ihnen eine Benutzeroberfläche bieten können , und Visual Studio Code ist wiederum ein solches Tool , mit dem Sie hier verwandte Befehle ausführen können . In Ordnung? sind also Dinge, die wir wissen können, wenn ich möchte, dass unsere Anwendung hier mit der CLI ausgeführt wird. Ich kann im Terminal und lass mich einfach das Windows schließen, Terminalfenster, die ich nicht benutze, diesen kleinen Mülleimer. Du kannst einfach darauf klicken, um das Fenster zu schließen. Und ich springe zu den Eigenschaften für ihre Datei mit den Raseneinstellungen. In Ordnung, also werde ich Ihnen einen Rundgang durch die Akte geben , damit Sie alles verstehen , was passiert. Aber vorher wollte ich mich nur auf diese Datei mit den Zeileneinstellungen konzentrieren. Jetzt haben wir zwei Profile von HTTP und HTTPS. Wenn wir möchten, dass unsere Anwendung ausgeführt wird, wird standardmäßig HDTP verwendet. Wenn ich dotnet run sage, würde es tatsächlich das HTTP-Profil und die Start- oder HTTP-Version unserer Anwendung standardmäßig verwenden, zitiere Unquote-Version. Es ist dieselbe Version, derselbe Code, nur ein anderes Sicherheitsverhalten. Wenn wir dann jedoch mit der HTTP-Einstellung ausführen wollten, müssten wir dies in unserem Dotnet-Lauf angeben. Also werde ich einfach dieses etwas größere Terminalfenster stummschalten . Und das können Sie tun, indem Sie die Strg-Taste gedrückt halten und Plus drücken , um die Gesamtgröße Ihres Visual Studio zu erhöhen. Code, Benutzeroberfläche und Steuerung minus, um es zu reduzieren, oder? Sie können also damit herumspielen und es an eine für Ihren Bildschirm geeignete Größe anpassen . Und was ist dann Dotnet Run noch? Und dann können sie Bindestrich, Bindestrich und Bindestrichprofil sehen und dann angeben, dass ich das HTTPS-Startprofil verwenden möchte. Oder wenn ich die Eingabetaste drücke, wird es erstellt. Und es wird die Terminalausgabe sehen, die unsere Anwendung jetzt auf unserem HTTP-Port und HTTP abhört , oder? Ich habe das nicht getan. Ein Teil davon würde immer noch laufen, aber es würde nur den HTTP-Port 5246 abhören. Ordnung, das sind also nur ein paar Kleinigkeiten. Wenn wir also bei gedrückter Maustaste auf diese URL klicken, wird unser Browser gestartet. Und dann können wir hier sehen, dass dies unsere MVC-Anwendung ist , die in Visual Studio Code ausgeführt wird. In Ordnung, und wenn ich mit dem, was ich gerade mache, fertig bin, kann ich einfach Control C benutzen, um es herunterzufahren. Also, wenn ich mit dem Testen fertig bin und wieder zum Code zurückkehren wollte und ich den laufenden Server beenden möchte. Ich kann einfach C steuern und dann wird es heruntergefahren und ich werde zur CLI-Schnittstelle zurückkehren. In Ordnung, das ist also ein netter, kurzer und schmutziger Überblick über Visual Studio Code und was es für Sie tun kann. Es gibt noch weitere kleine Kleinigkeiten, die wir unterwegs entdecken werden. Ich möchte Ihnen keine Informationsflut geben. Ich wollte nur auf einige der wichtigsten Dinge für unsere Entwicklungsaufgaben hinweisen . Und im Laufe der Zeit werden wir mehr sehen. Kein nettes Feature. Es ist nicht unbedingt notwendig, aber es ist eines, das ich verwende. Und es wird wahrscheinlich die Erfahrung beeinflussen, die Sie haben, basierend darauf, wie ich mein Ding mache. Aber ich verwende Autosave. Wenn Sie zu Datei gehen, werden Sie es auch tun. Wenn du nach unten scrollst, siehst du Autosave, also siehst du, dass es für mich angekreuzt ist. Das heißt, während ich tippe, speichert Visual Studio-Code meine Änderungen automatisch. Und wenn Sie es aktivieren, werden Sie eine ähnliche Erfahrung machen. Andernfalls müssen Sie natürlich, nachdem Sie Änderungen an unserer Datei vorgenommen haben, sie entweder speichern oder erstelle ich jedes Mal um die Spiegelung in der Testumgebung zu sehen? Autosave kann also viel Zeit sparen. Wenn es darum geht. Wir können auch unsere Einstellungen ändern. Wenn Sie ein anderes Farbthema verwenden möchten, ist es da, Sie können Ihr Thema auf was ändern, ein helles oder ein dunkles. Ich werde mich also nicht von der Dunkelheit ändern, aber du kannst die wählen, die du magst. Sie können auch Dinge wie Word oder höher aktivieren und Ihre Schriftgröße in den Einstellungen ändern. Sie können die Schriftart ändern, die Sie verwenden. Sie können die Schriftgröße ändern. Also meins ist 30. Rent weiß es. Wenn du es wissen willst oder mehr. Du kannst hier danach suchen und du kannst es ändern, was sie wollen, ein- oder ausschalten. Ich habe es an. Wenn wir jetzt zurückkommen, werden wir einen Rundgang durch unsere Projektdateien machen. 12. Führung von Dateien und Ordnern: Okay Leute, lassen Sie uns jetzt einen Rundgang durch unsere Projektdateien machen. Das ist also die Ebene mit den geöffneten Einstellungen. Lassen Sie mich das schließen und lassen Sie uns von vorne beginnen. Ich werde auch ein bisschen hineinzoomen und das Terminal schließen, damit wir mehr Platz haben. Wissen. Der Bin-Ordner. Dies wird generiert, nachdem Sie ein Projekt erstellt haben, und es speichert so ziemlich die Ressourcen, die Ihre Anwendung zum Laufen bringen, oder? Also im Wesentlichen, wenn Sie in Visual Studio F5 drücken oder den Befehl.net dotnet run verwenden würden . Was passiert ist, dass, wenn es sagt, dass es erstellt wird, all diese Dateien und Assets kompiliert und in diesen Bin-Ordner ablegt. Und dann wird die Anwendung aus diesem Bin-Ordner ausgeführt . Und dann ist das die Manifestation, die Sie beim Testen als interaktiv sehen würden. Auf der anderen Seite würden beim Veröffentlichen auch ähnliche Assets erstellt, und diese würden Sie auf dem Zielcomputer platzieren , wenn Sie Ihre Anwendung bereitstellen. In Ordnung? Nein, dotnet Core ist plattformübergreifend, sodass diese Assets auf jedem Betriebssystem funktionieren, auf praktisch jedem Servertyp , auf dem sie gehostet werden müssen. In Ordnung, das bekommen wir aus dem Bin-Ordner. Jetzt haben wir einen der Schlüsselordner , den wir bereits vor dem Build sofort einsatzbereit haben. Und das nennt man Controller. Jetzt haben wir im Controller-Ordner die Controller. Und denken Sie daran, dass Controller dazu da sind, den Ablauf Ihrer Anwendung zu steuern, was bedeutet, dass jede eingehende Anfrage über einen Controller geht. Und dann wird es bearbeitet und Sie erhalten entweder einen Fehler, weil es nicht richtig verarbeitet werden kann, oder Sie gelangen tatsächlich zu oder Sie gelangen tatsächlich zu der Seite, die Sie aufrufen möchten. Jedes Mal, wenn Sie auf unserer Website navigieren, senden Sie eine Anfrage mit jedem Klick, Sie senden eine Anfrage, wenn Sie das Ziel erreichen oder die erwarteten Ergebnisse erhalten, dann erhalten Sie eine Antwort. Hoffentlich erhalten Sie die Antwort, die Sie erwarten, oder Sie erhalten möglicherweise eine Fehlerantwort. Ein Controller befindet sich also zwischen dieser Request-Antwort-Transaktion, oder? Wenn wir zum Beispiel unsere Website ausführen und sie die Homepage geladen hat, ging sie zum Home-Controller und dann ging es standardmäßig zur Indexaktion und dann zum Index Aktionen ist eine Ansicht zurückgeben. Der Controller verfügt über ein Register aller möglichen Root-Anfragen , die er erfolgreich erfüllen kann. Eine solche Anfrage, die geroutet werden kann, ist der Index. Im Allgemeinen sollte Webentwicklung, Index immer Ihr erster Strand sein. Mehr Server werden versuchen, zum Index dot HTML oder Punkt PHP oder nicht SPX zu wechseln, oder? Unabhängig vom Dateityp und vom Erweiterungstyp sucht es immer nach einem Index. Zuerst. Home-Controller hat eine sogenannte Aktion, eine registrierte Route , Home-Controller weiß , dass er gehen kann. Wenn Sie nach Hause gehen, sucht es automatisch nach einem Index. Und wenn sie dann nach einem Index sucht, definiert diese Methode, was passieren soll , wenn der Index versucht zu werden, basierend auf dem Akkord und welcher Magie wir wollen. Vielleicht möchten wir Daten aus der Datenbank abrufen. Vielleicht möchten wir Berechnungen durchführen. All das machen wir innerhalb dieser Methode. Mach Sachen. In Ordnung? Und wir lesen unseren ganzen Code, unsere Magie und Logik hier. Und dann geben wir das zurück, was wir die Ansicht nennen. Ordnung, wir kommen also bald zum Ordner Views, aber Sie werden sehen, dass wir einen Views-Ordner haben. Dies ist das C in der Steuerung von MVC, dem Seas Controller. Das ist es also, was ein Controller macht. Es nimmt die Anfrage entgegen, von der es heißt, dass sie die Anfrage nicht erfüllen kann. Du willst, dass es in den Index geht? Ja, ich habe eine Indexaktion. Ich kann die Anfrage erfüllen. Folgendes muss ich tun, bevor Ihre Anfrage erfülle oder bevor ich Ihnen ein Ergebnis zeige. Dann gebe ich in der letzten Zeile die Seite zurück, die Sie angefordert haben, zusammen mit allen zusätzlichen Daten, die vorhanden sein müssen. Angesichts der Tatsache, dass dies ein Standardcode ist, können Sie sehen, dass es sehr einfach ist. Es wird einfach den pH-Wert zurückgeben. Es macht nichts Besonderes, bevor es die Seite umblättert. Die Aussicht ist also das ultimative Ziel und dies wird in der Regel die letzte Zeile in Ihrer Aktion sein die letzte Zeile in , wenn Sie Ihre eigene erstellen. Ein weiteres Ziel, das der Home-Controller kennt, ist der Datenschutz. Für jedes Ziel , das Sie sich wünschen, müssen Sie also eine Aktion haben. Und diese Aktion gibt eine Ansicht zurück oder gibt eine Reaktion zurück, die den Erwartungen des Benutzers entspricht. Sie haben auch einen weiteren allgemeinen Mythos, Aktion namens Fehler, die ein Modell der Fehleransicht zurückgibt. Also die Fehlerseite. Wenn Sie jetzt hier nachschauen, sehen Sie , dass dieser mehr tut. Erstens hat es einige Anmerkungen , die sich mit Caching befassen. Darüber müssen wir uns keine Sorgen machen, oder? Nein. Aber innerhalb der Methode sieht man, dass sie ein bisschen mehr tut. Es heißt Rückansicht und dann wird Rückansicht mit diesen Daten angezeigt. Das ist also im Grunde wie eine globale Fehlerseite. Wann immer es einen Fehler gibt, zumindest während des Debuggings, wird es verfolgen , welche Fehler ausgestrahlt werden, welche Aktivitäten es sind, und ermöglicht es Ihnen , ihn später in Ihrer Anwendung nachzuverfolgen. Das ist also etwas fortgeschritteneres Zeug , auf das ich nicht eingehen werde. Aber was ich hier wirklich hervorheben wollte, ist, dass es Informationen hinzufügt , die die Ansicht benötigt. Auf diese Weise geben wir Informationen in die Ansicht weiter. Der Blick nach Hause braucht keine Entzündung. Also mussten wir nichts tun. Stimmt. Ich müsste es nicht entzünden. Der Datenschutzverantwortliche benötigte auch keine zusätzlichen Informationen. Wenn die Fehlerseite jedoch erscheinen soll, möchten wir diese zusätzlichen Informationen aus dem Code dahinter übergeben , wenn wir die Ansicht zurückgeben. Das ist also im Wesentlichen das, was das tut. In Ordnung? Nein, ich bin nicht bereit, MVC zu bestellen. Ich gehe hier in der Reihenfolge der Ordnerstruktur vor. Die nächsten wären also die Modelle. Und ein Modell mit Modellfehleransicht ist das einzige Modell, das wir auf unserem Foto haben. Nun, das Error View-Modell enthält diese beiden Eigenschaften und so ziemlich unsere Modelle Slash-View-Modelle, unsere Klassendateien, die die verschiedenen Datenbits darstellen , die wir unserem Benutzer anzeigen möchten, oder? Ein Modell verkörpert also Zeichenketten in verschiedenen Datentypen, in Spool, Char usw. Was auch immer Sie auf Ihrer Seite anzeigen müssen, es muss dynamisch sein. So ziemlich werden Sie eine Klassendatei erstellen, die im Grunde die Rolle unseres Modells spielen wird. Es ist nur der Unterricht. Nichts Besonderes, wenn 0 p, nun, du willst keine Klassen haben und du weißt, was die Eigenschaften sind. Und was wir mit dem Controller im Wesentlichen machen , ist, dass wir die Daten festlegen. Das ist es also, was wir hier machen. Wir fügen die Daten tatsächlich in dieses Fehleransichtsmodell ein, oder wir erstellen ein Objekt dieser Klasse. Und sobald wir ein Objekt erstellt haben, die Eigenschaften nicht mehr mit den verschiedenen Datenbits gefüllt , die eins sein werden. Also hier füllen wir die Anforderungs-ID mit all diesen Informationen auf. Entweder sendet es das entsprechend ID oder es sendet den Trace-Identifier. Wenn das weiß, was es mit all dem füllen wird, dann wird es ein Objekt davon zurückgeben. Die Ansicht hat jetzt also ein Modell, das einige Daten enthält. Und die Ansicht weiß bereits, wie man die Daten aus dem Objekt extrahiert und die des Benutzers anzeigt. In Ordnung. Das ist es also, was ein Modell wirklich darstellt, es ist nur ein Objekt einer Klasse, das Daten speichert, die die Ansicht verwenden wird. Der Controller ist dafür verantwortlich , dieses Objekt mit den Daten zu füllen, bevor es in der Ansicht angezeigt wird. Obj, das ist einer dieser beliebigen Ordner, auf die wir nicht unbedingt besonders achten müssen. Auch hier gibt es nur eine Menge generierter Dateien, mit denen wir nicht oder zu oft interagieren. Also überspringe ich das. Wir haben uns die Eigenschaften angesehen und uns die Starteinstellungen der JSON-Datei angesehen. Also hier hat es, wie der Dateiname schon sagt, nur unterschiedliche Konfigurationen für das Ganze, die Anwendung sollte starten, oder? Wir haben also iOS-Einstellungen. Wenn wir mit einer lokalen IIS Express-Instanz laufen wollten , würde sie auf diesem Port laufen. Aber Vizio, sorry.net hat einen eigenen eingebauten Server. Wir müssen uns also nicht unbedingt auf das verlassen was wir in der Vergangenheit zum Ausdruck gebracht haben. So können wir unsere eigenen Startprofile in HTTP und HTTPS haben . Und dann können wir bei Bedarf sogenannte Umgebungsvariablen in die verschiedenen Starteinstellungen einfügen. In Ordnung? sind also so ziemlich die Einstellungen , die sofort einsatzbereit sind. Und Sie müssen diese Datei nicht unbedingt ändern , es sei denn, Sie wissen absolut , was Sie tun, und haben sehr spezifische Bedürfnisse hinter Ihren Änderungen. Im Allgemeinen können Sie diese Datei jedoch in Ruhe lassen. Gehen wir nun zu den Ansichten und dem Ordner Views über. Es kann sehr interessant sein. Zuallererst werden Sie feststellen, dass wir zwei haben. Wir haben da einen Ordner namens Home. Jetzt habe ich den Home-Controller gleichzeitig geöffnet , sodass ich Ihnen zeigen kann , was das Dateisystem erwartet und wie alles zusammenhängt. Sobald wir diese Namenskonvention befolgen, haben wir den Home-Controller. Wir haben also einen Views-Ordner namens Home. Was Sie also feststellen werden, ist, dass die MVC-Engine für immer den Controller, den Sie erstellen , automatisch im Views-Controller nach einem Ordner mit demselben Namen wie der Controller sucht. Ich möchte den gleichen Namen sagen. Ich meine, was vor dem Wort Controller kommt. Aber das ist ein Benennungsmuster. Also, wenn wir den Studenten-Controller hinzufügen. Dann wären es Studenten. Das ist der Name des Controllers. Das Wort Controller, das erwartet wurde. Okay, du solltest also immer das Wort Controller haben, aber was auch immer davor kommt, das ist der Name. Es wird erwartet, dass anstelle des Views-Ordners ein Ordner mit demselben Namen angezeigt wird. Und dann wird in diesem Ordner erwartet, dass verschiedene CSS-HTML-Dateien angezeigt werden. CSS HTML ist also die Erweiterung für Razor View-Dateien, oder? Und bevor ich darauf eingehe, wie eine dieser Dateien aussieht, wollte ich darauf hinweisen, dass jeder Dateiname einem Aktionsnamen entsprechen muss . Deshalb weiß View, wenn wir zurückkehren, was zurückgegeben werden muss. In Ordnung, also lass mich das noch einmal durchmachen. Wenn Sie eine Anfrage senden, wenn Sie rechts auf einen Link klicken , klicken Sie auf einen Link, der zu unserem Controller führen sollte. Der Controller bewertet den Link und prüft, ob er eine Aktion enthält, die der URL übereinstimmt, die Sie aufrufen möchten. Wenn es eine Option gibt, geht es zu dieser Aktion über, führt die Magie dieser Aktion aus und versucht dann, eine Ansicht zurückzugeben. Diese Ansicht, die es zurückzugeben versucht die CSS-HTML-Datei, die er ist die CSS-HTML-Datei, die er mit demselben Namen für diese Aktion angegeben hat. Wenn Sie also eine Anfrage senden und es keine Aktion gibt, die dieser Anfrage entspricht, erhalten Sie einen 404-Fehler. Wenn Sie eine Auktion und Anfragen senden, tut es mir leid, und es wird eine Option gefunden , die der Anfrage entspricht. Und dann versucht es, die Ansicht zurückzugeben und es kann die passende Datei nicht finden Dann erhalten Sie eine Fluorophor-Anfrage und das hält im Grunde die gesamte Website am Laufen. Das ist also im Wesentlichen die Erfahrung, die Sie erwarten können , wenn Sie beim Erstellen Ihrer Website im Visier sind. Und wenn Sie diese Namenskonvention einmal befolgt haben, werden Sie kein Problem haben. Sie werden also hier sehen, dass ich Celsius HTML indexiert habe. Ich habe einen Index als Aktion für Datenschutz, Datenschutz. Es kann Ausnahmen von der Regel geben , da hier ein Fehler vorliegt, aber in diesem Ordner wird kein Fehler angezeigt. Tatsächlich liegt ein Fehler im geteilten Ordner vor. Das ist in Ordnung. Im Allgemeinen sollten Sie jedoch dem Muster hinter Index und Datenschutz folgen . Schauen wir uns nun an, was in der Indexdatei enthalten ist. In der Indexdatei haben wir so ziemlich eine Mischung aus HTML und C-Sharp. In Ordnung, das ist also HTML. Das ist ein Code, der scharf aussieht. Die CSS-HTML-Datei ist also wie eine Hybriddatei, die es uns ermöglicht, eine gewisse Menge C-Sharp in diese HTML-Datei zu schreiben. Aber wirklich und wahrhaftig ist es nur eine verherrlichte HTML-Datei. Wenn wir etwas Dynamisches brauchen , können wir C-Sharp einführen. Und um C-Sharp einzuführen, benötigen wir nur ein Werbeschild. Und dann können wir anfangen, etwas zu tippen, oder? Das ist C Sharp-Code. Also mal sehen, ich werde das zuerst ausführen. Ich verwende meine Tastenkombination Control Shift, Apostrophe hat das Terminal gestartet, ich sage dotnet run und lass damit unsere Anwendung starten. Also hier ist unsere Bewerbung, oder? Und beachten Sie, dass es gegangen ist, es hat nicht angegeben, wohin es gehen wollte, aber es hat uns nur zur Indexseite des Home-Controllers weitergeleitet , oder? Wenn ich auf Datenschutz klicke, dann sieh dir das an. Es heißt Home Slash Privacy. Also, wer ist der Controller? Datenschutz war das A und O. Wenn ich versucht habe, zu, lass uns versuchen, versuchen wir es mit Index, dann geht es zurück zur Startseite. Es kennt also den Home Slash Index. Aber wenn ich versuche, nach Hause zu gehen, meinen Namen zu streichen , erhalte ich eine 404, weil für diese Route keine Aktion gefunden werden konnte. In Ordnung. Jetzt möchte ich Ihnen zeigen, wie wir dieser Ansicht etwas Dynamisches verleihen können. Also, wenn ich wollte, sagen wir mal den Datumswert. Also ich kann sagen, wann die Urkunden unterzeichnet sind. Nein. Schau dir das an, UTC weiß es, Ordnung, und speichere das. Und ich mache einfach Control C im Terminal, um es zu beenden. Drücken Sie dann einfach nach oben, um den neuesten Ausführungsbefehl zu erhalten den neuesten Ausführungsbefehl und drücken Sie dann erneut die Eingabetaste, sodass es neu gestartet wird. Und dann navigiere ich zurück zur Website oder aktualisiere es einfach und schaue mir das an. habe ich gerade hinzugefügt, oder? Das ist ein Zeitstempel, der auf dem Code basiert, den ich gerade eingegeben habe, nämlich C-Sharp-Code, Datetime, UTC wissen. Okay, das ist also, ja, es ist eine HTML-Datei, aber ich kann meinen C-Sharp-Code eingeben. Wenn ich also möchte, dass das, sagen wir, in einem H1-Tag ist, könnte ich tatsächlich ein HTML erstellen. Jeder Tag. Gib diese Zeit ein. Und dieses Mal gehe ich zu Control C, um es zu beenden. Und dieses Mal werde ich einen anderen Befehl verwenden. Anstatt Dotnet Run sage ich Dotnet Watch. In Ordnung. Also sieh dir das jetzt an. Und ich sagte Dotnet Watch. Es wird mich wissen lassen, dass es das tun wird, was sie Hot Reload nennen. Hot Reload ist aktiviert. Lassen Sie mich nach oben scrollen, damit wir genau sehen können, was darin steht. Hier. Es ist in Dotnet Watch Hot Reload aktiviert. Und dann können wir eine Liste anderer Optionen sehen. Dann sagen sie, benutze Control R, um neu zu starten. Auf diese Weise müssen wir , wenn wir unsere Änderungen vornehmen, nicht anhalten und starten und anhalten und rennen und springen und Punkt darauf laufen. Watch wird uns das etwas leichter machen. Also, wenn ich zu meinem Browser zurückkehre, ist hier die Datetime, die als H1-Tag bekannt ist, oder? Wenn ich also mehr davon haben möchte, kann ich einfach Control C, V verwenden. Und ich habe bemerkt, dass ich nicht markiert habe, als ich CV gesteuert habe, ich habe einfach auf die Zeile geklickt, Control C, Control V. Es wird duplizieren Sie die Zeile. Und bei jeder Änderung weiß ich, dass sich die Datei geändert hat , und es wird ein Hot-Reload durchgeführt. Und wenn ich dann zum Browser zurückkehre , ohne anzuhalten und zu starten, ist hier eine Frucht der Arbeit. Ordnung, also ich zeige Ihnen nur dass die View-Datei wirklich nur eine verherrlichte HTML-Datei ist , die es uns ermöglicht, bei Bedarf etwas C-Sharp-Code einzufügen. Und aus diesem Grund können wir , wenn wir ein Objekt mit Daten laden, tatsächlich mit den Daten interagieren, die von unserem C-Sharp-Objekt direkt hier in unserer View-Datei kommen . Die Indexansicht ist ziemlich einfach. Lassen Sie mich das alles einfach entfernen. Wir haben die Sicht auf die Privatsphäre, die nicht spektakulärer ist. Außer hier werden Sie sehen , dass sie die scharfe Injektion durchführen , weil Sie den Titel dynamisch von der Seite, auf der Sie sich befinden, einstellen können , und dann drucken sie einfach diese dynamische Seite hier. In Ordnung. Wenn ich jetzt zum gemeinsamen Ordner gehe, haben wir die Layoutdatei oder die Layoutdatei. Verkleinern Sie die Ansicht ein wenig. Die Layoutdatei ist im Grunde nur die Vorlage, anhand derer die gesamte Website ableiten wird , wie sie aussehen sollte. Wenn Sie feststellen, dass, wenn ich zwischen Zuhause und Privatsphäre wechsle, alles statisch ist, außer dem, was sich zwischen der Kopf- und Fußzeile befindet. In Ordnung, nun, alles sieht konsistent aus und Konsistenz ist sehr wichtig. Wenn Sie Websites mit statischen Websites erstellen, müssten Sie diese Navigationsleiste und die Fußzeile sowie alle Elemente auf jeder einzelnen Seite manuell kopieren und einfügen und die Fußzeile sowie alle Elemente auf jeder einzelnen Seite manuell kopieren und . Wenn Sie eine Konsistenz wünschen, bietet die Layoutseite eine HTML-Vorlage. Sie werden feststellen, dass die Ansichten nicht mit den HTML-Tags und allem beginnen. Und bei jedem WEBO beginnen sie immer mit deinem Skelett. Wir haben jedoch das Skeleton an einer Stelle, wir haben die DOCTYPE-HTML-Tags. Wir haben den Kopf und wir haben den Körper in einer Datei. In Ordnung, wir müssen das also nicht für jede einzelne View-Seite wiederholen , die wir erstellen. Aber im Inneren des Körpers und wir haben das Navi, lass mich die Teile einfach irgendwie zusammenbrechen, oder? Wir haben das Navi und dann beginnen wir mit dem Container, in dem Sie normalerweise anfangen, Ihre Inhalte zu platzieren. Dann haben wir das und dann haben wir diesen Abschnitt namens Render Body. Renderkörper ist also der Ort, an dem die Ansicht eingefügt wird. Deshalb ist alles andere statisch, wenn wir die Seiten wechseln , außer dem, was sich im Körper befindet . In Ordnung? Dies ist der Container-Bereich, Datenschutz. Das ist unser Container-Abschnitt, der den Text abgibt, weil er uns nur die View-Datei oder den Inhalt der View-Datei anzeigt die View-Datei oder den Inhalt der , die basierend auf der Route geladen wird. Alles andere ist jedoch konsistent. Wenn ich nun kleine Anpassungen vornehme, wie zum Beispiel diesen Abschnitt umbenennen, wie zum Beispiel diesen Abschnitt umbenennen, alle Schritte machen, Lebensmittel und Zwischenräume zwischen den Mitteln schaffen. Und das habe ich im Titel, der Navigationsleiste sowie in der Fußzeile gemacht. Wenn wir uns hier umschauen, werden wir sehen, dass sich alles geändert hat, oder? Und egal auf welcher Seite wir uns befinden, es wird immer konsistent sein. Nein. Ich denke, wir haben ein gutes Verständnis unserer Ansichten und wir haben andere Dokumente, die eine unterstützende Rolle spielen, auf die wir später eingehen werden. Wir haben den Ordner Dub, Dub, Dub Root , der unsere Assets enthält. Also kommen wir mit diesem CSS. Dies ist unsere eigene CSS-Datei , die eingebaut ist, sodass wir unser eigenes CSS erweitern und schreiben können, aber wir haben Site-CSS, mit dem wir unsere eigene Site schreiben können, nur in das wir unsere eigenen JavaScript-Dateien schreiben können. Und dann haben wir den Ordner lib , der Bibliotheken von Drittanbietern enthält. Also im Allgemeinen, wenn Sie Bibliotheken von Drittanbietern installieren, wie es mit Bootstrap- und jQuery-Ende sofort einsatzbereit ist. Diese Bibliotheken, dann solltest du sie in einen Flip legen. Diese werden standardmäßig auch in unserer Layoutdatei referenziert. Hier. Hier sehen Sie alle Skriptdateien, auf die verwiesen wird, oder? In der Kopfzeile sehen Sie auch, alle CSS-Dateien als Schlüssel referenziert werden. Und mit diesen, also haben wir Bootstrap, wir haben uns für CSS entschieden, und dann haben wir eine spezielle CSS-Datei , die speziell für Layouts entwickelt wurde. Und Sie werden es hier mit dem Namen layout.css sehen . Mit CSS können wir noch mehr CSS spezifisch für die Layoutseite schreiben , ohne dass es global ist. Okay, als nächstes haben wir einige andere eingebaute Dateien und wir haben die App-Einstellungen für diese JSON-Datei. Die entgegengesetzten Dinge, wie die JSON-Datei, besteht also aus zwei Teilen, sodass wir andere Umgebungen und spezifische Versionen erstellen können . Wenn wir also für die Entwicklung bestimmte Konfigurationen verwenden möchten, können wir sie dort festlegen, im Vergleich zum Zeitpunkt der Veröffentlichung im Vergleich zum Testen usw., die Basin-Umgebung. Wir können verschiedene haben. Wir werden das im Laufe der Zeit ändern. also wissen, dass es sich um eine Schlüsseldatei handelt, und Sie sollten sehr vorsichtig mit den Änderungen sein , die Sie hier vornehmen, denn wenn diese schlecht geändert werden, wird Ihre App nicht ausgeführt. Dann haben wir unsere program.cs, die in jeder C-Sharp-Anwendung enthalten ist. Program.cs ist die erste Datei, die ausgeführt wird. Sobald die Anwendung ausgeführt wird, wird sie nach program.cs suchen. Was auch immer in dieser Datei enthalten ist, gibt den Ton dafür an, wie Ihre Anwendung funktionieren wird. Und wenn wir sehen, dass es den Ton , fügen wir dem Container zunächst angibt, fügen wir dem Container zunächst Dienste hinzu. Der Container wird so sein, wie die App verwendet, um zu wissen, was sie kann und was nicht. Möchten Sie so viele Dienste hinzufügen, wie wir benötigen , damit dieser Container erstellt wird, bevor die App erstellt wird. Also hier sehen wir IDE-Unterstützung für Controller mit Ansichten, wir machen ein MVC braucht unbedingt Controller und Views, oder? Dann erstellen wir die App. Und dann gibt es einige Checks, um zu sagen, okay, wenn wir in einer Entwicklungsumgebung sind, oder wenn wir nicht in der App-Entwicklung sind , dann können wir diese Seite neu schreiben, vier Pfeile und wir können HTTPS-Umleitung, richtig? Im Grunde bedeutet das also, dass Sie nichts anderes als HTTPS, Strict Transport Security Hitter, verwenden können. Aber dann ist das normalerweise für die Produktion. Deshalb steht es in dieser If-Aussage. Wenn wir nicht in der Entwicklung sind, sollten Sie diesen HTTPS-Transport-Header strikt einhalten, oder? Wir verwenden HTTPS, die Umleitung. Sie werden hier also sehen, dass immer dann eine Warnung erscheint , wenn wir die HTTPS-Einstellung nicht verwenden, das heißt, die Umleitungs-Middleware befindet sich während unserer Warnung, das ist diese. Das nennen wir also Middleware. Das sind also Mini-Apps, die wir der Anforderungspipeline hinzugefügt haben . heißt, sobald meine Anfrage eingeht, sobald jemand auf eine URL klickt, wird er sagen, okay, was ist die Reihenfolge, die ich machen sollte? Ich sollte zuerst Erich lesen, um Erich auf HTTPS zu lesen Ich sollte statische Dateien verwenden, also diese Assets aus dem Stammverzeichnis. Ich sollte Routing verwenden. Ich sollte versuchen, zu autorisieren, und dann sollte ich versuchen, eine Karte zu erstellen. Dann sollte ich weglaufen, oder? Das ist so ziemlich die Reihenfolge, in der alle Funktionen bei jeder Anfrage aufgerufen werden Wir können unsere eigene Middleware hinzufügen. Wir können die Reihenfolge ändern, aber die Reihenfolge ist wichtig. Sie möchten also sicherstellen, dass Sie beim Hinzufügen von Middlewares zu dieser Datei diese in einer bestimmten Reihenfolge hinzufügen, in einer bestimmten Reihenfolge hinzufügen je nachdem, wie Ihre App funktionieren soll. Das ist es für die Tour, oder? Es wurden viele Informationen ausgetauscht. Sie möchten also noch einmal herumspielen, Sie wissen schon, wie Sie zusätzliche Projekte erstellen können. Wenn Sie ein zusätzliches Projekt erstellen und versuchen möchten , die Dateien durcheinander zu bringen und zu sehen, was nicht mehr funktioniert und so weiter. Das ist eine gute Möglichkeit, sich zurechtzufinden. Ich würde vorschlagen, dass Sie mehrere Projekte haben , die Sie in dieser Breite bearbeiten. Moment haben wir jedoch alle Projektdateien , die für unser Verständnis in dieser Phase unbedingt erforderlich sind . In unserer nächsten Lektion werden wir unser Projekt auf GitHub hochladen. 13. Projekt zu GitHub hinzufügen: In Ordnung Leute, also lasst es uns wissen, treibt unser Projekt voran. Also verwenden wir das von uns erstellte Projekt , um ein brandneues Repository auf unserem GitHub-Konto zu erstellen. Dadurch wird auch eine Verbindung zwischen unserer Visual Studio Code-Instanz und der GitHub-Instanz hergestellt. Und das würde es uns ermöglichen, nach Bedarf zu drücken und zu ziehen. Gehen Sie zur Registerkarte „ Quellcodeverwaltung“. Und Sie haben zwei Möglichkeiten ein Repository zu initialisieren, das auf GitHub veröffentlicht wird. Was also passiert, ist, dass Sie, sobald Sie Git auf Ihrem Computer installiert haben, ein lokales Quellcodeverwaltungssystem zugreifen können. Daher wird es auch als verteiltes Quellcodeverwaltungssystem bezeichnet . Auf Ihrem eigenen Computer können Sie alle gewünschten Änderungen vornehmen, den gesamten Verlauf, alles, was Sie tun, alles auf Ihrem Computer. Wenn Ihr Computer jedoch ausfällt, haben Sie kein Backup. Also die Remote-Option, wie GitHub, wo wir es einen Remote-Server nennen. Es könnte also GitHub oder Bitbucket sein, es könnte Azure DevOps sein. Es könnte eine Maschine in Ihrem Büro , auf der installiert wurde und die dem Team dient. Was auch immer es ist. Das nennen wir einen Remote-Server. Das ist also das zentrale Repository, in dem Sie und viele andere ihren Code gleichzeitig pushen und speichern können. Sie haben also Ihre eigenen lokalen Kopien sowie eine zentralisierte Kopie, auf die jeder zugreifen kann. Bevor wir nun wirklich zum zentralen Repository gehen, möchte ich etwas über die Dateien erklären und welche Dateien wir eigentlich verfolgen wollen und nicht während der Tour durch das Projekt, ich hätte darauf hingewiesen, dass es bestimmte Dateien gibt aufgrund unserer Aktivitäten eher automatisch generiert werden. Und das bedeutet, dass wir sie nicht unbedingt in der Quellcodeverwaltung behalten müssen. Oder die Quellenkontrolle ist der Laster, die Brände, mit denen wir die Veränderungen tatsächlich geheilt haben. Das einzige , was nachträglich generiert wird, ist , dass wir nicht unbedingt in der Quellcodeverwaltung nachverfolgen müssen. Also all das, um zu sagen , dass es bestimmte Verzeichnisse wie OBJ gibt und dass ich so schnell im Handumdrehen generiert werde. Stimmt. Also OB-GYN hat das Debulk oder die Release-Dateien und andere Assets, die kompiliert werden. einen Dotnet-Build machen will unseren Dotnet-Lauf oder den Dotnet Watch, sie werden generiert, sodass wir sie nicht unbedingt Wer einen Dotnet-Build machen will, unseren Dotnet-Lauf oder den Dotnet Watch, sie werden generiert, sodass wir sie nicht unbedingt in der Quellcodeverwaltung benötigen. Was also passiert, ist, dass Git Hub das Konzept einer Gitignore-Datei hat oder Git im Allgemeinen ein Konzept einer Gitignore-Datei hat, in der wir diese Datei generieren können , Verzeichnisse anzugeben. die wir nicht wollen. Und da wir möglicherweise nicht unbedingt Experten für alle Verzeichnisse sind , die wir ignorieren dürfen oder die wir uns leisten können, zu ignorieren. Es gibt gute Vorlagen, auf die wir zugreifen können, um sie zu ignorieren . Unsere Dotnet-CLI ermöglicht es uns, Dotnet New Git Ignore zu generieren. Und dann wird weitergemacht und diese Gitignore-Datei auf der Grundlage der Visual Studio-Vorlagen generiert . In Ordnung? Diese Visual Studio-Vorlage weiß, dass für jedes Projekt, das auf Visual Studio basiert, auf Slash Dotnet basiert, diese Art von Ordnern nicht enthalten sein muss. Sehen Sie sich hier die Massenversion an, Sie werden sehen, es war ein OBJ. Und das heißt, was S groß oder gemein ist, oder wenn es diese drei Buchstaben hat , dann sollen wir es ignorieren. Das war es, was Visual stand. Das ist es, was diese Gitignore-Datei dir sagen wird , wenn du sie sendest , um diese Dateien und die Dateien in diesen Verzeichnissen zu ignorieren . Ordnung, das ist also eine sehr nette Möglichkeit, Ihre Check-ins oder Ihre Kommentare sehr präzise und präzise zu halten Ihre Check-ins oder Ihre Kommentare . Und Sie können hier sehen , dass Sie die neueste Vorlage von diesem Ort auf GitHub erhalten können . In Ordnung, wenn wir jetzt zurück zum Quellcontroller gehen, sagen wir, auf GitHub veröffentlicht. An dieser Stelle wirst du möglicherweise aufgefordert bei GitHub zu authentifizieren, also gibst du einfach deine Anmeldeinformationen und alles andere an. Jetzt können wir sagen, ob wir in einem privaten oder öffentlichen Repository veröffentlichen wollten . Privat bedeutet, dass Sie und alle Personen, die Sie Zugriff gewähren , darauf zugreifen können. Ich kann also nicht auf dein Profil gehen und es sehen. Und dann bedeutet öffentlich , dass jeder, der auf Ihr Profil stößt, es sehen kann. Nun, zumindest würde diese Übung dazu ermutigen, an die Öffentlichkeit zu gehen weil es einfacher ist, sie zu teilen. Es macht es einfacher, der Welt zu zeigen, was Sie getan haben und woran Sie arbeiten. Und die Leute könnten sogar nachschauen und Code-Reviews durchführen und dir dabei helfen, richtig? Also werde ich es öffentlich machen. Sobald wir auf Öffentlich klicken, wird das veröffentlicht. Um für uns bereit zu sein, wird eine automatische Commit-Nachricht eingefügt. Wenn wir also „Open on Getting“ sagen, wird GitHub gestartet und es werden dir all deine Projektdateien angezeigt , die übernommen wurden. Und beachten Sie, dass es kein OBJ und keinen anderen Ordner gab, der möglicherweise automatisch generiert wurde. Ausgeschlossen, richtig, also wären diese von R ignoriert worden , ignoriere die Datei. Wir haben auch eine automatische First-Commit-Nachricht erhalten. Und was passiert , ist, wenn wir das tun, wenn wir unsere Änderungen vornehmen und die Änderungen dann an die Source Control Engine senden wollen . Wir möchten eine Zusammenfassung dessen, was wir getan haben, beifügen. Lassen Sie mich hier in unserer Views-Datei eine kleine Änderung vornehmen. Ich ging runter, um das Layout und die DateTime hier zu teilen . Das Jahr hier ist also statisch. Was wäre, wenn ich möchte , dass das dynamisch ist? Denn wenn es sich im nächsten Jahr ändert, möchte ich nicht kommen und diese Datei manuell aktualisieren müssen . Also kann ich das ändern , um die Uhrzeit zu sehen. Gedanken. Kein Ohr. Vorteil, hier schreiben oder C-Sharp schreiben zu können. Also ich sage nur, gib mir das Datum und die Uhrzeit in diesem Moment und was ist das Jahr. Und dann wird das dynamisch sein. Was auch immer die Zeit ist und was auch immer passiert, unser wird sich immer entsprechend ändern. In Ordnung? Sie können also Dotnet Run ausführen und einfach überprüfen, ob Sie immer noch dasselbe Jahr sehen. Natürlich, und es funktioniert immer noch. Aber dann, wenn sich diese Zahl erhöht, wenn das Jahr inkrementiert wird, braucht ihr euch natürlich wenn das Jahr inkrementiert wird, braucht keine Gedanken darüber zu machen, diese Nicht-Dualität zu ändern. Das ist nur diese winzige Veränderung. Sie können sich die visuellen Hinweise notieren , die Sie sehen werden, wie diese kleinen Punkte und m. Das bedeutet also, dass dies jetzt eine Modifikatordatei ist. Also, als ich das letzte Mal diese ganze Datei bekommen habe, sah es so aus. Lassen Sie mich also sagen, dass dies jetzt geändert wurde. Das heißt , wenn ich zu meinem Versionskontroll-Tab gehe, wird mir mitgeteilt, dass ich eine ausstehende Änderung habe, weil ich mindestens eine Datei geändert habe. Jetzt kann ich sehen, was sich geändert hat. Sagen wir, ändern Sie die Fußzeile, das Jahr soll dynamisch sein. Das ist meine Commit-Botschaft. Jetzt kann ich Commit erstellen, wodurch die Änderungen lokal in meiner lokalen Kopie des GitHub-Repositorys gespeichert würden . Ich kann auch Commit und Push und Commit und Sink machen. Commit und Push bedeutet also, dass ich lokal Commit übernehme und meine Änderungen an das Remote-Repository übertrage, was in diesem Fall GitHub-Commit ist. Und Sync sagt, dass ich lokal Commit durchführen, meine Änderungen auf GitHub pushen und versuchen werde meine Änderungen auf GitHub pushen und , alle Änderungen zu erhalten, die möglicherweise auf GitHub waren. Und das ist perfekt für unsere Teamsitzungen Gerade wenn mehrere Personen zum Remote-Repository beitragen , möchten Sie immer über die neuesten Änderungen verfügen. Sie können auch, bevor Sie sich verpflichten und unser Engagement vorantreiben , sehen auf den Liter gezogen. Sie können diese drei Punkte also tatsächlich verwenden. Ich kann Paul sagen. Und es wird schauen und sehen, okay, was sind sie? Dateien, die sich im Remote-Repository geändert haben und sich von Ihren unterscheiden? Lassen Sie mich diese Änderungen vornehmen. Manchmal kommt es zu Konflikten, wenn zwei von Ihnen dieselbe Datei geändert haben könnten , oder? Sie könnten also in einen Konflikt geraten. Hoffentlich wirst du damit nicht enden. Aber im Grunde möchten Sie immer so viel wie möglich die neueste Version haben . Sie möchten also unregelmäßige Pools während der Arbeit machen. Aber dann drücke ich, um deine Änderungen hochzuschicken. Okay, du willst also immer ziehen, vielleicht erschrecken alle Abstürze, bevor du pushst, denn das hilft dem Team. Allerdings, wo Solarentwickler für diesen Kurs sind, gebe ich Ihnen nur ein klares Ja, aber was wir tun können, ist dieses Engagement und Push, da wir alleine arbeiten. Es wird also lokal kommen und dann werden die Änderungen mit GitHub synchronisiert. Und wenn ich dann zurück zu Git Hub gehe , um mir das Repository anzusehen, aktualisiere ich. Dann wirst du hier sehen, dass es eine neue Commit-Nachricht gibt , die vor ein paar Sekunden eingegangen ist. Und Sie können einen Drilldown durchführen und sehen, was sich geändert hat. Wir haben diese Zeile in diese Zeile geändert. In Ordnung, das ist also die Stärke von Quellcodeverwaltungssystemen während Sie Ihre Projekte erstellen. Wir werden also regelmäßig solche Check-ins durchführen und sicherstellen , dass wir alle Änderungen, die wir im Laufe der Zeit vornehmen, im Auge behalten . 14. Die Layoutdatei und Bootstrap verstehen: Ordnung Leute, also in dieser Lektion möchte ich, dass wir etwas mehr Zeit damit verbringen, uns diesen kleinen Blick von vorhin anzusehen. Und ich wollte nur auf einige der wichtigsten Teile hinweisen , die Sie ändern können. Ändern Sie sicher, wenn Sie Ihre gesamte Anwendung an Ihre Bedürfnisse anpassen möchten. Fangen wir also mit Zeile Nummer eins an. Wir haben also die Ladedatei. Und noch einmal, dies ist unsere HTML-Vorlagendatei für unsere gesamte Website. Die verschiedenen Seiten müssen also nicht mit allen HTML-Tags beginnen mit allen HTML-Tags beginnen wie wir es bei einer statischen Website tun würden. Dies ist eine dynamische Datei, die sich um all das für jedes neue Stück kümmert , das wir wollen. Es ist bereits mit allen HTML5-Metatags nachgerüstet . Und es beinhaltet auch Bootstrap. Also sofort erhalten wir Bootstrap mit unserer MVC-Anwendung. Jetzt ist Bootstrap eine sehr leistungsstarke UI-Bibliothek. Wenn du zum ersten Mal davon hörst , ist das in Ordnung. Sie können sich also tatsächlich damit vertraut machen , indem Sie auf bootstrap.com gehen. Das ist ihre offizielle Website. Und Sie werden hier sehen, dass die neueste Version 5.2 ist. Dies ist die Version, die sofort mit unserem Paket und unserem Projekt geliefert wurde. Führen die sofort mit unserem Paket und unserem Projekt geliefert Sie Sie stattdessen durch, wie Sie es installieren würden. Aber das alles müssen wir nicht tun, da es bereits in unserem Projekt enthalten ist. Die Dokumentation ist jedoch ausgezeichnet. Wenn Sie also etwas darüber wissen müssen, wie es funktioniert, können Sie zu getbootstrap.com gehen und dort wissen müssen, wie es funktioniert, können Sie zu getbootstrap.com gehen blättern. Schauen wir uns also an, wie wir etwas wie vielleicht die Navbar anpassen können. Du könntest einfach hier suchen. Und Sie können Navi, Nav-Leiste sehen. Das ist fair genug Bar. Dann lassen sie Sie sich erklären, wie es funktioniert. Also hier zu den Komponenten, die Sie Navbar haben, sprechen sie darüber, wie es funktioniert. Sie sagen dir den unterstützten Inhalt und dies ist das allgemeine Codelayout, wenn du möchtest, dass der Balken so aussieht. Das bedeutet also, dass der Barcode für alle, die genug waren, hier beginnt und er sich zwischen diesen Nav-Tags befindet, die auf Android geöffnet werden. Also für jeden Artikel , den wir wollen, können wir dort platzieren. Wenn wir also das Wort Navbar wollen, das ist unsere Navbar-Marke, wenn wir stattdessen ein Bild dort hätten, könnten wir das Bild platzieren, nun, rate mal was? Wir haben auch diesen Abschnitt. tut mir leid. Wir haben auch diesen Abschnitt. Hier haben wir diesen Ankertag, die Marke Navbar. Sie werden also sehen, dass Bootstrap wirklich nur ein Haufen Klassen ist , die ich für uns entwickelt habe , um uns zu helfen, Dinge schneller zu machen, weil es Dinge gibt , die wir immer tun wollen. Wann immer wir eine Webanwendung haben, gibt es Farben, wir wollen immer ihre bestimmten Stile. Wir wollen immer, dass die Jungs bei Bootstrap die Leute sind, die Bootstrap entwickelt haben, nachdem sie jahrelang immer wieder dasselbe gemacht haben. Sie haben eine verherrlichte CSS-Datei erstellt. Ordnung, eine riesige CSS-Datei, das ist diese CSS-Datei, die wir in unsere Dub, Dub Roots Lib, Bootstrap, CSS aufgenommen haben . Und dann werden Sie sehen, dass es dort keine Puffer gibt, aber der, auf den Sie sich konzentrieren möchten, wäre das main.css- oder das Punkt-CSS. In Ordnung? Dot Min ist nur eine verkleinerte Version dieses CSS. Aber der Punkt ist, dass dies nur eine große CSS-Datei ist. Schau dir das an, die ganze CSS-Datei, ein CSS-Code und das Styling, richtig, nur damit wir es nicht immer wieder machen müssen. Wir können einfach ihr Stylesheet verwenden und ihr Fachwissen und ihre harte Arbeit nutzen . Okay, das ist also das ganze Wochenende personalisierbar genug. Wenn wir ein Bild hinzufügen wollten, das das zeigt, okay, wenn du ein Bild möchtest, könntest du das stattdessen tun und dein Logo hinzufügen. Ich glaube nicht, dass wir ein Logo verwenden werden, aber ich würde mir die Farbschemata ansehen. Okay, los geht's, also kannst du die Farbe ändern. Wir haben also drei Möglichkeiten. Wir haben Dunkelblau und wir haben Licht. In Ordnung? Hier zeigt dies die Klassen , die wir für jede Klasse verwenden können. Also im Nav-Tag, wenn ich zurück zu meinem Layout, CSS-HTML-Datei, meinem Nav-Tag, springe , sobald ich es sehe, verwende derzeit Navbar-Bindestrichlicht. Okay, also wenn ich das dunkle Theme wollte oder das sehen müsste, ist Navbar-Bindestrich dunkel. Oh, nun, das ist die Grundschule, also werde ich die blaue bekommen. Also, wenn ich dunkel wollte, würde ich dieses benutzen. Also wenn ich hier rüber gehe und sie es nur von Navbar Hyphen Light und BG White bis Navbar Hyphen Dark und Biji Dark wusste Hyphen Light und BG White . Und wenn ich mir das dann ansehe, hat es mein Terminal Control Shift und Apostrophe und dann Dotnet gestartet . Ich sage einfach Dotnet Watch. Nun, sieh dir die Navbar an, nun, weißt du was? Nein, meine Texte können nicht gesehen werden. Stimmt. Weil Zuhause hier sein sollte und Privatsphäre hier sein sollte. Aber das ist schwarz auf schwarz, also kannst du es sehen. In Ordnung, lassen Sie uns sehen, was Bootstrap empfehlen würde. Also würden sie empfehlen, nun ja, sie sagen mir nicht, wie man den Text hier weiß schreibt, oder? Aber dann kann ich nach verschiedenen Farben für Text suchen . In Ordnung? Ich scrolle nur, weil ich sehe, ich versuche zu sehen, ob sie hier irgendwelche Beispiele haben, das ist das eine. Das ist in Ordnung. Aber wenn ich ändern möchte, wie mein Text aussieht, haben sie einen Abschnitt namens Topographie. Los geht's, Typografie wird unter dem Inhalt rot. Und dann erzählen sie uns hier die verschiedenen Stile , die wir verwenden können. Wenn Sie also einfach Ihr H1-Tag bootstrappen lassen, sehen Ihre HDLs automatisch so aus. Sie können sehen, dass sie wie Displays aussehen, indem Sie die Klassenanzeige eins bis sechs verwenden. Das ist cool, aber ich bin eher auf verschiedene Farben aus. Und es tut mir leid, das steht nicht an der Topographie, das sollte nicht an den Farben liegen. Lassen Sie uns also aufspringen, um die Farbe anzupassen und uns die Farbe anzusehen, oder? Hier sind die verschiedenen Farben. Das Coole an Bootstrap ist, dass es sehr konsistent ist. Also, wenn du Primary machst , weißt du, wirst du diesen Blauton bekommen, sekundäre, diesen Grauton , Seide sagt Gefahr usw. usw. usw. Also Licht gibt uns ein leichtes Grau, allgemein leicht weiße Farbe. Und Sie werden sehen, dass Sie eine ganze Farbpalette haben. Wenn Sie die Farben dazwischen haben möchten, können Sie all diese Farben erhalten, ohne die tatsächliche, ich habe Kopfschmerzen oder die RGB-Kombination kennen zu müssen . Das macht es so praktisch. Okay, wenn ich möchte, dass meine Texte diese bestimmte Farbe haben, kann ich in meinem Code zu den Nav-Elementen wechseln , die Sie hier einer Klasse sehen, oder im Nav-Element, im Nav-Element und dann in das Nav-Element von das Ankertag, das tatsächlich das Routing darstellt, oder? Was das ist, B, Kontrolle und Aktion , erkläre ich später. Ich möchte mich jetzt nicht darauf konzentrieren, aber ich möchte die Farbe meines Textes ändern. Also werde ich dieses Ankertag, das den Klassen-Nav-Link enthält, von dunklen Textbindestrichen zu hellen Textbindestrichen ändern den Klassen-Nav-Link enthält, von dunklen Textbindestrichen . In Ordnung. Jetzt, wo ich diese Datei geändert habe und sie im laufenden Betrieb neu geladen wurde, lassen Sie mich wieder hinüberspringen. Und Bum. Nein, es ist Text, Armaturenbrett. Sehen Sie, dass es so einfach ist, die Farbe zu ändern, sobald ich mit den verschiedenen Klassen und den verschiedenen Farben, die mir in Bootstrap zur Verfügung stehen, vertraut und den verschiedenen Farben, die mir in Bootstrap zur Verfügung stehen , Es ist für mich einfach, einfach zu wechseln zwischen Stylings, wenn ich muss. 15. Die Homepage ändern: In Ordnung, also was wir tun werden, ist unsere Homepage zu ändern. Zurück zu unserem Bootstrap-Dokument kann ich zwei Beispiele überspringen. Ich öffne das einfach in einem neuen Tab. Und anhand der Beispiele sehen Sie hier, dass sie verschiedene Arten von Abschnitten haben , die Sie zu Ihrer Website hinzufügen können. Also, wie möchten Sie, dass Ihr Foto die Qualität hat, von der Sie möchten, dass es aussieht? Anders. Hero Laos, Features, Nägel usw. Sie haben sogar ganze Seiten, die du verwenden könntest und ich kann diese anwenden. Es hat also eingebaute Steuerungen wie ein Karussell, oder? Sie könnten diese Anmeldevorlage für Ihre Website verwenden. Du könntest all diese Dinge gebrauchen, oder? Es geht nur darum zu wissen, wo der Code platziert werden muss. Das sind also verschiedene Filter, die Sie nutzen können. Dies sind verschiedene Header. Du könntest gebrauchen. Helden, Helden-Sektionen, richtig? Basierend auf der Art der Website, die Sie erstellen. Ich werde jedoch diese Karussellvorlage verwenden. Ich denke, das wäre ein nettes Homepage-Layout für unser Schulverwaltungssystem. Oder wir können einfach ein paar Bilder einfügen und bei Bedarf zusätzliche Texte einfügen. Um die Quelle, die ich benötige, von dieser Seite zu erhalten. Ich klicke mit rechten Maustaste und gehe zu Seitenquelle anzeigen. Und ich denke, Seitenquelle anzeigen sollte eine Option sein, die jeder Browser, jeder moderne Browser hat, oder? Von hier aus sehe ich die vollständige HTML-Seite, wir wissen , dass wir nicht alles brauchen, weil wir nur unsere Homepage modifizieren, also brauche ich nicht alles. Ich brauche diese, du weißt schon, diese Tags nicht. Ich brauche nur diesen Abschnitt, der für die Ansicht benötigt wird , oder? Wir können den Stil verwenden , weil ich denke, dass diese Stile einzigartig für die PID sind. Also lasst uns diese Stile ausleihen, oder? Ich werde sie jedoch nicht in ein Style-Tag stecken. Stattdessen werde ich sie in unsere CSS-Datei für unsere Website einfügen. Ordnung, also diese Styles können da reingehen. Und was passiert ist, dass, wenn Sie Bootstrap erweitern möchten, was hier passieren würde. Wenn Sie Bootstrap erweitern möchten, würden Sie die Bootstrap-Datei nicht ändern. Sie würden einfach Stile schreiben , die den vorhandenen überschreiben. In Ordnung, also weiter geht es mit Dash Light. Wenn Sie möchten, dass es eine andere Farbe hat, können Sie es in Ihre eigene Klasse, in Ihre eigene CSS-Datei einfügen und sehen, dass der Punkt Dash Light annimmt. Und dann nimmt das Einsetzen deiner eigenen vielleicht Farbe an oder was auch immer du ändern wolltest. Und dann überschreibt es diese Datei, diese Klasse in der ursprünglichen Bootstrap-Datei. Ordnung, also ich trage nur diese Styles, weil wir sie vielleicht brauchen könnten, natürlich. Und dann scrolle ich nach unten, um zu sehen , wo der Inhalt beginnt. Also der Inhalt, oder, und es gibt tatsächlich auch benutzerdefinierte Stile für diese Vorlage. Lass mich das einfach ansehen und ich werde mir die auch ausleihen. In Ordnung? Weil ich diese gebraucht habe, damit die Seite wie die Demo aussieht. Also leihe ich mir das einfach aus. Sie können natürlich mehrere CSS-Dateien haben, aber ich werde diese Seiten-CSS-Datei mit all diesen benutzerdefinierten Stilen erstellen. In Ordnung? Ich ermutige Sie auch, sich die verschiedenen Stile durchzulesen , denn hier werden Sie sehen, dass es sich um einen Körperstil handelt. Und dieser Körperstil könnte dazu führen, dass wir unseren bestehenden Körperstil überschreiben. Es könnte also sein, dass Sie sie zusammenführen. Du könntest es auch einfach hier belassen, du wirst sehen, dass es eine Polsterung unten und eine Polsterung oben hinzufügt. Also unser ursprüngliches, das einen unteren Rand hinzufügt, aber wir werden sehen, wie sie zusammenspielen , und dann entsprechende Anpassungen vornehmen. In Ordnung? Also haben wir das, wir haben das CSS für unser Eins des pH-Werts. Ordnung, wir kommen langsam aber sicher dorthin. Als Nächstes möchte ich diesen Abschnitt verwenden, der den Inhalt enthält, den ich benötige. Also fange ich mit dem Karussell an, denn denken Sie daran, dass wir bereits einen mittleren Abschnitt in unserem Layout haben . Es ist also wichtig, diese Dinge zu beachten, oder? Ich habe das Div, das ist der Container, und dann habe ich diesen Main. Und dann möchte ich den Körper rendern und der Körper wird mir die Ansichten zeigen. Was ich also tun möchte, ist den Inhalt in der Ansicht durch den Inhalt zu ersetzen , den ich benötige, oder? Also würde der Inhalt, den ich für die Ansicht benötige , tatsächlich nach diesem gemeinen Tag beginnen und so weit gehen, wie das heißt Todd? Nun, hier ist das Haupt-Tag, aber das ist hinter der Fußzeile. Ich brauche keine Fußzeile. Schon. Habe eine Fußzeile. Stimmt. Also müsste ich den ganzen Weg bis hierher kommen. Lassen Sie mich das Kopieren und Einfügen nehmen und ich füge es in meine Indexpunkt-HTML-Datei ein. Okay, lass mich ein bisschen herauszoomen, damit wir sehen können es ein bisschen bitterer Winkel ist, oder? Also hier ist unser Karussell. Und wenn Sie noch einmal eine Dokumentation zum Karussell wünschen , können Sie die Dokumentation jederzeit auf der Bootstrap-Website abrufen. Es befindet sich unter Komponenten. Und sobald sich meine Augen angepasst haben und noch einmal, wenn du das alles nicht durchgehen willst, kannst du immer karussell suchen, was funktioniert. Es war genau dort. Also wie es funktioniert und dann wirst du hier sehen, dass dies Beispiele dafür sind, wo du ein Karussell bekommen kannst. In Ordnung? Wenn Sie ein Karussell mit Bach-Tasten und Vorwärtstasten wollen , nun, hier ist der Code, der Ihnen zeigt, was Sie durch Ellipsen ersetzen müssen, oder? Und das ist eins zu eins und das ist auch wichtig. Wenn Sie mehr möchten, fügen Sie einfach mehr Folien hinzu, fügen Sie weitere Abschnitte wie diesen für jedes gewünschte Karussellelement oder Bild hinzu. Sie sehen also, es ist sehr, sehr flexibel. Das Beispiel, das ich kopiert habe, verwendet also genau das Beispiel, wo ich es habe, dieses hat tatsächlich Schaltflächen. Dieser hat Platzhaltertext, sodass ich Bildunterschriften hinzufügen kann. Hier sind meine Bildunterschriften. Und dann habe ich bei jedem Artikel die Möglichkeit, das Bild zu ändern. Sehr geehrter Herr, ich weiß, dass er nur einige SVGs von Monday Incidents verwendet , die wir irgendwann ändern können. Dann haben wir die Navigationstasten. Wir haben auch einige Abschnitte, in denen sie okay, div class haben und sie nennen es Marketingkurs. Hier ist Marketing, von dem ich sicher bin, dass es sich um einen der Kurse handelt , die wir uns ausgeliehen haben. Da haben wir's. Marketinginhalte. Hier ist die Klasse des Marketings. Wenn wir es also anpassen, an unsere Bedürfnisse anpassen müssten , könnten wir all das ändern, wenn wir wollten. Es gibt viele Platzhalter und Bilder, sodass wir diese natürlich ausfüllen können Dann haben Sie den Funktionsteiler und wir können hinzufügen, was immer Sie wollen. Jetzt, wo wir diese Anpassung vorgenommen haben und ich immer noch eine Dotnet-Uhr mache, nur für den Fall, dass eine Dotnet-Uhr mache, nur für den Fall Sie die Dotnet-Uhr seit der letzten Lektion gestoppt haben, können Sie einfach eine Dotnet-Uhr starten. Aber wenn wir zur Vorschau unserer Seite springen , bekommen wir genau das. In Ordnung? Jetzt werden natürlich ein paar Anpassungen erforderlich sein, denn hier sehen wir, dass wir oben eine Polsterung haben, die wir nicht wollen. Wir wollen diese Polsterung nicht über unserer Navigationsleiste haben. Also springe ich wieder rüber und modifiziere das CSS. Deshalb habe ich gesagt, dass wir auf das CSS achten und wissen müssen das CSS achten und , was wir hinzufügen und ändern. Also nehme ich das ganze Polster. Und wenn ich es einmal gesehen habe, ist das alles was ich weiß. Es sieht normal aus, okay? Und dann sieht für mich alles andere gut aus, oder? Wir können also eine mittig ausgerichtete Beschriftung haben. Wir können eine ausgerichtete Beschriftung überschreiben. Wir können eine linksbündige Bildunterschrift haben. Und das sind natürlich Bilder, die wir ändern können. Alles. Dies sind Textsammlungen, die wir ändern können. Und wir können unsere Inhalte nach Bedarf einfügen , wo ich normalerweise einige Bilder bekomme, ist pixabay.com. Es ist eine hervorragende Quelle für einige nette Bilder, wenn wir sie nicht kommerziell verwenden oder dem Künstler oder wem auch immer Bildnachweis geben . Also kann ich einige dieser Bilder machen. Und was ich tun werde ist, dass ich sie nicht herunterlade. Ich löse sie einfach. Ich werde sie nicht herunterladen, aber wir haben die Möglichkeit, eines herunterzuladen und Ihnen zu zeigen, wie wir ein Bild in unser Projekt einfügen. Aber ich werde die anderen beiden einfach direkt von der Website einbetten , damit ich sie kostenlos herunterladen kann , und ich lade das dünne TPR 12 80-Bild herunter. Sie können es auch reduzieren. Also nehmen wir für diesen einen 12 80 mal 853. Blackboard, nein, ich bin kein Roboter. Natürlich durch die Mädels. Laden Sie dann die Datei herunter. Alles. Was ich jetzt gerne mache, ist die Datei aus dem Browser in den Visual Studio-Code zu ziehen die Datei aus dem Browser in den und nichts, was eine sehr, sehr coole Funktion ist, die man nutzen kann, oder? Sobald diese Datei heruntergeladen ist, kann ich sie ziehen und dann in Visual Studio Code ablegen. Und wo ich will, ist es im echten Root-Ordner von Dub Dub. Und als Erweiterung würde ich es in einem Bilderordner haben wollen, also habe ich es einfach rübergezogen. Es geht darum, Dub, Dub Roots zu kennen. In Ordnung. Ich will aber nicht, dass es dort sitzt, alles ist organisiert. Ich möchte organisiert bleiben. Also klicke mit der rechten Maustaste auf Dub, Dub, Dub Root erstellt einen neuen Ordner, ich nenne ihn Images. Und dann kann ich das Bild da hineinziehen. Dann würde ich das Bild umbenennen. Also vergewissere dich in meinem Webkurs immer, dass es am besten ist, das Bild so bequem wie möglich umzubenennen . Also Blackboard. Ordnung, das ist der Name des Bildes, das ich aus meiner Sicht gesehen habe. Ich kann es ändern. Lass mich etwas herauszoomen, damit ich etwas schneller navigieren kann. Ich kann jetzt das Bild ändern , das in einem meiner Karussellelemente verwendet wird , die das erste Auto aufgeführt haben, sodass Artikel dieses SVG verwendet. Ich will dieses SVG nicht. Also werde ich mir eine Kombination ansehen, wie es aussehen sollte. Also so sollte das Bild des Karussellobjekts im Code aussehen. In Ordnung? Wieder einmal verwendet er in den Beispielen verständlicherweise nur eine Reihe von Platzhaltern , aber ich werde das verwenden und dieses SVG ersetzen. Und dann werde ich für das Bild SRC Tilde dort platzieren. Also bis zum, das ist das spanische Symbol. Und informiere dich einfach darüber, woher ich diese Informationen habe. Wenn ich zurück zu meinem Layout springe, wirst du hier sehen, das ist alles, was wir referenzieren, eine Datei, die sich im Ordner lib in den Dub-, Dub-, Dub-Roots befindet , richtig, also live jQuery, jQuery min, hier ist jQuery, hier ist das, hier ist die Datei. In Ordnung. Wenn ich also ein Bild aus dem Bilderordner und denselben Dub, Dub, Dub Root haben möchte, muss ich sagen, es ist Tilde Slash. Und dann gehen wir auf den, auf den Pfad, also Bilder schlitzen, Schrägstrich. Und dann sage ich Black Board, Dots, GP. In Ordnung? Und dann mache ich es zur Alternative, sieh einfach ein Tafelbild an. In Ordnung. Wenn ich nun zu meiner Ansicht zurückkehre, lassen Sie mich etwas auffrischen. Ordnung, da ist also unsere Homepage. Wissen Sie, dass wir die Tafel haben, oder? Einmal, wenn ich die Überschrift ändern wollte, also für die Überschrift des Textes hier, Beispiel Überschrift, School of Management System. In Ordnung, also repräsentative Texte. Sie sehen also, ich nehme nur vorhandenen Code, ich modifiziere ihn nach Hawaii, ich brauche ihn. Und manchmal fangen wir so an, bis wir immer kreativer werden und uns immer wohler fühlen. Das beste Schulmanagementsystem, das auf ESP, dotnet, MVC, Alright, b.net, Core six basiert dotnet, MVC, Alright, b.net, , das sind sieben. Denn was wir tun, ist wiederverwendbar, in Ordnung, sobald ich mein Wissen über das Management habe, in Ordnung, los geht's. Also kein Schulmanagementsystem, Vesikelmanagementsystem. Melden Sie sich noch heute an. Das bringt nichts, aber ich finde es nett , es dort abzulegen, falls Sie Ihr Produkt bauen. Das ist also unsere erste Folie. Sie können also tatsächlich dieselben Schritte mit den anderen Bildern ausführen, wenn Sie möchten. Als ich sagte, dass ich sie nicht herunterladen werde, was ich vorhatte, als ich sagte, dass es kopiert wurde, war der Bild-Link. Sobald ich den Bild-Link kopiert habe, ist es ein direkter Link zum gehosteten Bild, sodass ich ihn nicht kopieren muss. Es ist ein CDN, also könnte ich es einfach einbetten, ohne es herunterzuladen. Also, wenn ich zum nächsten Karussell-Element gehe und dieses SVG-Tag durch dieses Bild-Tag ersetze . Und dann werde ich für das SRC diesen CDN-Link verwenden. In Ordnung? Und das habe ich dort platziert. In Ordnung? Und dann wird dieses Bild ein Geometriebild sein. Also, wenn ich zurückgehe und nachschaue, okay, hier ist unser Blackboard und dann ist hier unser Geometriebild. Und dieser ist ziemlich laut. Vielleicht möchten Sie mit der Bildunterschrift abschätzen, wie es mit der Bildunterschrift spielt , oder? Und dann Kinder in Indien? Ja, Bildlink kopieren. Und wir wollen eine gewisse Repräsentation der Kinder, die an dieser Schule sein werden, oder? Das ist also die letzte Änderung, die ich vornehme , und ich schlachte sie nur ein bisschen ab , bis ich mich orientieren kann. Stimmt. Also los geht's. Und lass es einfach sein, dass wir unsere Homepage so geändert haben , ungefähr so aussieht, wie wir es wollen. In Ordnung. Ich werde auch einfach den Untertitelbereich aus dem Geometriebild entfernen . Ich glaube nicht, dass wir diese Bildunterschrift brauchen. Das braucht am wenigsten. Also werde ich die beiden P-Tags entfernen, die nur die H1- und die P-Tags sind . Und ich lasse die Schaltfläche mit der Aufschrift „Mehr erfahren“ stehen, oder? Und für die Kinder, eine, intelligente Schüler. In Ordnung? Und aus der ganzen Welt. In Ordnung. Ich zeige nur, ich weiß, wir können in der Galerie stöbern. Nett. Also ich denke, das ist eigentlich die perfekte Startvorlagenseite für diese Art von System. In Ordnung. Ich muss ein intelligenter Student mit dieser Schreibweise sein. Ich entschuldige mich bei Lead Chant. Da haben wir's. In Ordnung, also gehe ich, ich überlasse es Ihnen, den Rest dieser Abschnitte anzupassen, oder? Und es geht wirklich nur darum, den Code anzusehen und darauf zu achten. Ordnung, also wenn du einfach durchscrollst und es dir ansiehst, hier ist der Marketingbereich. Hier sind die Platzhalter, SVG. Sie können diese durch Ihre eigenen Bilder ersetzen , die Sie in diesen kleinen Kreisen haben möchten . Hier ist die Überschrift, hier ist der Text unter der Überschrift und da ist die Schaltfläche „ Details anzeigen“, oder? Abhängig von der Art des Produkts, das Sie entwickeln, können Sie diese Abschnitte modifizieren, um besser auf Ihre Bedürfnisse zugeschnitten zu sein . Sie könnten diesen Abschnitt auch einfach entfernen. Es könnte sein, dass Sie diesen Abschnitt auf der Website nicht möchten . Ich weiß, dass wir bereits wissen, wie wir unsere Bilder hinzufügen können. Also für diese 500 mal 500 Platzhalter hier noch einmal die SVG-Tags , die wir ersetzen können. Ordnung, also mach weiter und erkunde es und hab Spaß damit. 16. Eine Über uns Seite hinzufügen: Ordnung Leute, in dieser Lektion werden wir uns ansehen, wie wir unsere eigene Seite erstellen können. Im Moment haben wir also ein Zuhause, wo ich Privatsphäre habe oder was wäre, wenn wir eine Seite über uns wollen? Wie fügen wir das hinzu? Lassen Sie uns also zurück zu Visual Studio Code springen. Und ich werde mit einem Controller beginnen. Wir haben den Home-Controller und wir wissen, dass der Home-Controller es uns ermöglicht, zu navigieren, zu indexieren und den Datenschutz zu gewährleisten. Und wir haben die dritte Optionstaste. Alles, was wir brauchen, ist unser eigenes, kein eingebautes, oder? Also werde ich zunächst Ergebnisse für öffentliche Aktionen erstellen Ergebnisse für öffentliche Aktionen den Vorlagen der vorherigen folge. Und dann nenne ich es ein Boot. Das heißt, ich will eine Seite namens Boot. In Ordnung, also der Sauerstoff braucht man, um ein Boot zu sehen. Und dann muss jede Methode mit Aktionsergebnissen wieder sichtbar werden. Ich würde das gerne einfach machen. Das ist das Skelett , das ich zuerst mache. Bevor ich anfange, die Magie zu schreiben. Garden sagte, das ist eine einfache Grube, also wird es in dieser speziellen Grube keine Magie geben. Aber jetzt haben wir die Ansicht, tut mir leid, auf keinen Fall habe ich die Auktion im Controller. Wissen. Wenn ich versuche, dort zu navigieren. Okay, und ich sehe Slash, Home Slash oder Boats, dann wirst du diese Art von Fehler bekommen, zumindest während du testest. Es wird also heißen, dass es sich um eine ungültige Operationsausnahme handelt. Die Aussichtsplattform wurde nicht gefunden und es wurden Orte durchsucht. Es hat in View Slash Home nach einer Datei namens Boot gesucht , macht CSS-HTML. Es wurde auch in View Slash, geteilter Schrägstrich darüber angesehen . Der Fall ist GMO. Das ist im Wesentlichen der Grund, warum Fehler nicht unbedingt im Home-Ordner liegen muss. Es kann geteilt werden, da dort ein Fehler gefunden werden kann. Wenn wir also Ansicht zurückgeben sagen, wird an diesen Stellen automatisch nach der Ansicht gesucht, zu der wir zurückkehren, nach einer Datei mit dem Namen der Ansicht, von der wir gesagt haben, dass wir sie zurückgeben werden. Da es es also nicht finden kann, wurde es verrückt. Also lass es uns wissen, geh zurück und erstelle diese Datei. Also klicke einfach mit der rechten Maustaste auf Home, oder? Ich gebe diesen Knoten, dass diese Ordner normalerweise eine Karotte haben und die Dateien dämmern. In Ordnung, das kann verwirrend werden, besonders wenn Sie Drag & Drop ziehen , wie zum Beispiel, als wir das Blackboard per Drag & Drop gezogen haben . Aber es fängt an, die verschiedenen Blöcke und Abschnitte von Dateien hervorzuheben . Und du wirst diese Linien unterwegs sehen. Achte also genau auf diese Dinge. Also klicke mit der rechten Maustaste und sage neue Datei, und ich gebe den Namen Boat Dot CSS HTML ein. Drücken Sie die Eingabetaste und jetzt habe ich meine View-Datei. Jetzt ist es eine leere Datei, aber nehmen wir an, ich wollte einen Hinweis von, okay, was sind die ersten paar Dinge, die ich in der Datei benötige? Ich kann mir die Vorlagen der vorangegangenen Dateien ansehen . Genau hier sehe ich, dass es einen Datenbereich für den Titel gibt, also kann ich ihn oben hinzufügen. Richtig. Dadurch kann ich den Titel der Seite festlegen , die in der Ansicht erscheinen soll. Denn denk an das Layout, das ist der Titel, oder? Es wird also alles sehen, was zu Zeitpunkt in den Ansichtsdaten enthalten ist. Drücke durch den Namen der Website, das ist ein Titel, auf den die Seite kommt, Herr. Ich kann also angeben, dass dies die Seite Über uns ist. In Ordnung, dann muss ich nur noch das HTML platzieren. Ich möchte für diese Ansicht, es ist unwahrscheinlich, dass wir gesehen haben, dass wir nicht die gesamten HTML-Vorlagen und alles, wir brauchen nur das spezifische Zeug. Also werde ich zurück zu unseren Beispielen für Bootstrap-Websites springen . Und ich werde nur ein sehr einfaches Beispiel wählen. Ich werde dieses Cover benutzen, oder? Also, wenn ich zu dieser Cava-Vorlage springe, will ich wirklich nur diesen Text. Ich will nur den Text, der da ist. Ich sage nur Seitenquelle anzeigen. Ich werde nicht auf das Ganze eingehen und alle Stile usw. nehmen. Mich interessiert wirklich nur, was in diesem Hauptteil steht. Ordnung, also nimm und ich füge es hier ein. In Ordnung. Dann kann ich den Text ändern, damit wir dazu in der Lage sind. Bleiben Sie der Entwicklungsgesellschaft von Pebble treu. In Ordnung? Und Sie könnten Sie in ein beliebiges Absatzspiel setzen in ein beliebiges Absatzspiel um zu sehen, wie sowohl das Unternehmen als auch dann Sie sehen können, kontaktieren Sie uns, kontaktieren Sie uns für weitere Informationen. In Ordnung. Ich konzentriere mich nicht unbedingt auf all das ausgefallene HTML, das wir einfügen können. Ich zeige dir nur, wie wir das zusammenfügen können. Eine gut aussehende Website für MVC-Anwendungen. Wenn wir also dort aktualisieren, sehen wir unseren Text richtig. Jetzt. Wie komme ich hierher? Richtig, abgesehen von der Eingabe von Home Slash oder beidem? Wie komme ich auf diese Seite? Weil ich es manuell eingegeben habe, wir aber nicht erwarten können, dass unsere Benutzer wissen, dass wir eine Schaltfläche eingeben müssen. Wir müssen ihnen eine Möglichkeit geben, verdoppelt zu werden. Es ist also genauso, wie sie nach Hause und in die Privatsphäre kommen können . Ordnung, also was wir tun ist den Navigationsbereich zu modifizieren. Gehen wir also zurück zu unserem layout.css, HTML. Und hier sind genug Artikel, also haben wir Artikel für Zuhause, ich werde genug Artikel haben, um die Privatsphäre zu schützen. Also brauche ich ein weiteres Nav-Objekt und ich bin bereit, es dazwischen zu legen, hormonaler Datenschutz. In Ordnung. Bei diesem habe ich nur kopiert und eingefügt. Also habe ich gerade eines der Nav-Elemente hervorgehoben: Öffnen, LI, Ankertag, Verbündeter schließen, kopieren und dann einfügen. In Ordnung, nichts Besonderes. Dadurch behalte ich das bei, ja, nimmt die Konsistenz von Dash Lights bei, sodass ich es nicht von Grund auf neu tippe, wenn ich Fehler riskiere, sondern nur kopieren und einfügen und wiederverwenden. Nein, ich habe nicht gesehen, dass wir diese SP-Attribute durchgehen werden. Das sind also keine regulären HTML-Attribute. Das sind Razor-Tag-Helfer. In Ordnung? Für das Ankertag haben wir also einen Helfer, mit dem wir einen Bereich angeben können. Ein Bereich ist eine besondere, wortwörtlich besonders Ära und Webapplikation. haben wir nichts , zumindest noch nicht. musst du dir also keine Sorgen machen. In Ordnung? Aber wir haben einen Controller. Zu welchem Controller möchten Sie navigieren? In normalem HTML müssten Sie also H ref ist gleich lesen und dann versuchen, den Schrägstrich herauszufinden. Dieser Ordner schneidet diesen Ordner, Dieser Ordner schneidet diesen Ordner, um zu der gewünschten Datei zu gelangen. Fein. In einer dynamischen Umgebung wie dieser hat uns dotnet Core die Figur ohne Navigation leicht gemacht , oder? Weil es weiß, dass es Controller und Views verwendet. Wir können tatsächlich angeben, dass wir zu diesem Controller gehen möchten. Wir können unser Zuhause sehen, weil wir immer noch den Home-Controller verwenden. Welche Aktion möchtest du? Wenn Sie also zum Home-Ankertag wechseln, wenn Sie auf Home klicken , sollte es zum Home-Controller und zur Indexaktion gehen. Wenn Sie auf das Datenschutz-Ankertag klicken, sollte es zum Home-Controller und zur Datenschutzaktion gehen. Denken Sie daran, dass die Aktion die hier definierte Methode ist , die die Ansicht zurückgeben soll. Wenn ich also zur About-Seite gehen möchte, muss ich zu ihrem Home-Controller und der About-Aktion gehen. Also kann ich das im Code ändern und verwende diesen. Die Aktion, die ich ausführen werde, ist also ein Blitz und der Text, den ich im Ischium erwarte , ist eine Schraubensoftware, die diese Änderungen vornimmt. Wenn ich die Website neu lade, erhalte ich einen 500-Fehler. Oh, mir ist klar, dass manchmal, wenn man ändert und es neu erstellt wird und man zum Fenster wechselt, es tatsächlich irgendwie Frisco wird , bis zu dem Tag man nicht wechseln kann, während ich umbaue. Lassen Sie es ein wenig neu aufbauen, bevor Sie wechseln. Okay, habe gerade ja gesagt, starte neu und wisse , dass es neu gestartet wurde. Ich kann zurückgehen und die Website neu laden. Da haben wir's. Ich weiß, dass ich meine neue URL sehe, eher unseren Menü-Link. Wenn ich darauf klicke, wird sie zum Home-Controller und zur About-Aktion weitergeleitet, wodurch unsere Seite über uns zurückgegeben wird. Ordnung, so einfach ist es also, Ihre Ansichten und Ihre Navigation zwischen Ihren Ansichten und den verschiedenen Bereichen Ihrer Anwendung wirklich zu konfigurieren Ihre Ansichten und Ihre Navigation zwischen Ihren Ansichten und den verschiedenen Bereichen . 17. Zu GitHub hinzufügen: In Ordnung Leute, wir haben also einen weiteren Meilenstein erreicht und jetzt verstehen wir besser, wie unsere Ansichten und das Layout und alles zusammenpassen. Wir haben Bilder hinzugefügt, wir haben unsere Startansicht geändert, wir haben neue Ansichten hinzugefügt. Ich kannte die Aktionen unseres Controllers nicht und am Ende hatten wir einige neue Dateien und einige modifizierte Dateien. Jetzt müssen wir also einchecken oder uns lieber zu unserem Quellcodeverwaltungssystem verpflichten lieber zu unserem Quellcodeverwaltungssystem , was gut ist. Nur als visuelle Hinweise: Alles, was grün ist, hat eine UV-Einstellung , was bedeutet, dass es nicht verfolgt wurde, was bedeutet, dass es sich um eine neue Datei handelt , von der nichts bekannt ist. Jedes Mal, wenn Sie eine Datei hinzufügen, wird sie also in einem Zustand ohne Tracking angezeigt und sie ist grün. Und sobald die Datei seit dem letzten Huhn existiert und Sie Änderungen vorgenommen haben, dann wird sie orange oder gelb sein und als geändert angezeigt, oder? Wir können also zu unserem Tab für die Quellcodeverwaltung wechseln, wo sie uns die verschiedenen Änderungen mitteilen. Und von hier aus können wir tatsächlich angeben ob es ignoriert werden soll, wir könnten die Änderungen rückgängig machen, wir könnten spezifische hinzufügen. Erstens Gitignore. Manchmal wollen wir das machen, wenn wir Konfigurationsdateien haben , für die wir kein Huhn wollen, oder? Wir könnten es dem Gitignore hinzufügen. Wir könnten quasi eine Phase machen, als ob du etwas Null festlegen möchtest , aber nicht alles. könnten wir sagen. Stufe. Wie gesagt, wenn Sie Änderungen vorgenommen haben , sie aber nicht mehr möchten, können Sie einfach sagen, Änderungen verwerfen. Und du könntest sogar einen Vergleich anstellen. Du könntest also sagen, offene Änderungen und es wird dir tatsächlich einen direkten Vergleich von Wasservögeln zeigen einen direkten Vergleich von und was nicht, seit du deine Änderungen vorgenommen hast. sind Tools, die uns helfen können, sicherzustellen, dass wir nicht ihr eigenes Ding einchecken und dass wir mit den Änderungen, die wir hoffentlich vorgenommen haben, auf Kurs sind mit den Änderungen, die wir hoffentlich vorgenommen haben, auf Kurs . Jetzt können wir hinzugefügte oder manipulierte Seitenaufrufe und Layouts sehen , oder? Das ist also unsere Hühnerbotschaft. Jeder, der mitkommt und unsere Änderungen sieht kann uns einen Überblick darüber geben, was mit diesem Commit passiert ist. Und wir machen einfach ein Commit und Push. Okay, jetzt, da wir diesen Abschnitt abgeschlossen haben, sehe ich dich in der nächsten Lektion. 18. Mit Azure Data Studio in Datenbank verbinden: Ordnung Leute, in dieser Lektion werden wir unsere Datenbank erstellen , die wir als Rückgrat unseres School of Management Systems verwenden werden als Rückgrat unseres School of Management Systems verwenden . Wissen Sie, lassen Sie uns damit beginnen , unser Azure Data Studio zu öffnen . Und ich werde das Docker-Image für unseren Microsoft SQL Server verwenden , das wir aus früheren Aktivitäten installiert haben. Dort werden wir unsere Datenbank erstellen. Sie können das also noch einmal überdenken. Hören Sie nur zu, um zu sehen , wie Sie dunkler öffnen und diese Datenbank starten würden . Aber ich habe schon Dunkler und ich werde dich nur durch ein paar Dinge führen, falls du den Container von diesem Zeitpunkt an gestoppt hast. Und du musst dich wieder mit Hole vertraut machen , um zum Laufen zu kommen. In Ordnung. Sie können also weitermachen und Ihren Docker-Desktop öffnen . Ich werde dieses Mal nur den Desktop verwenden und nicht die CLI. Und wir würden unter dem Bereich Container alle Container sehen können , die wir derzeit haben. Sie haben also wahrscheinlich nur einen. Das ist in Ordnung. Ich habe mehrere. In Ordnung, aber hier ist der , den wir zuvor erstellt haben, nämlich der Microsoft SQL Server-Container. Stimmt das? Bevor ich nun auf Ausführen oder Start klicke, wollte ich nur darauf hinweisen, dass Sie, falls Sie einige der Einstellungen vergessen haben, die Sie dort eingegeben haben, tatsächlich zurückkehren und alle Konfigurationen überprüfen können . Sie können sich die Inspektion also tatsächlich ansehen. Wenn Sie darauf doppelklicken, können Sie zu Inspect wechseln. Und dann sehen Sie in der Umgebung , dass die Umgebungsvariablen, die wir hinzufügen übergeben werden, wenn wir sie einrichten. Also habe ich wirklich mein Passwort vergessen. Stimmt das? Das ist die Haltung, die ich benutzt hatte. Also kann ich das einfach kopieren und das im Hinterkopf behalten, weil ich es brauche, wenn ich eine Verbindung herstelle. Und denken Sie daran, dass die Berichtsnummer Sie eingegeben haben, diese Support-Nummer ist , dass Sie versuchen, eine Verbindung zu jemandem herzustellen, um diesen Container zu starten. Und ich kann mir den Protokollbildschirm ansehen, um zu sehen, dass er erfolgreich gestartet wird und dass es nirgends Fehler gibt. Das ist gut. Sobald es sich in einem laufenden Zustand und ich wieder hinüberspringe, sehen Sie hier, dass es grün ist, also läuft es und sendet auf Port 1.400. Nein, ich kann weitermachen und mit Azure Data Studio eine Verbindung herstellen . In Azure Data Studio kann ich also auf diese neue Verbindung klicken. Möglicherweise haben Sie nicht so viele Verbindungen wie ich. Das ist in Ordnung. Aber von hier aus werde ich nur sehen, wie Microsoft SQL Server-Server vom Typ Nixon ein lokaler Host ist. Und wenn wir dann Visuals verwenden, tut mir leid, wenn wir SQL Server verwenden, verwenden Sie ein Komma für den Port, oder? Also localhost-Komma, dann 1.400. In Ordnung? Der Authentifizierungstyp ist SQL-Anmeldung. Der Benutzername ist SE, wie wir es standardmäßig konfiguriert haben oder wie wir es standardmäßig wissen. Und unser Passwort ist das Passwort, das Sie verwendet haben. Sobald ich das alles getan habe und auf Verbinden geklickt habe, wird mich gewarnt, dass ein vertrauenswürdiges Zertifikat erforderlich ist , sodass ich einfach das Trust Cert-Serverzertifikat aktivieren kann. Und wenn ich das einmal gemacht habe, nein, ich bin verbunden. Also habe ich Localhost Coma 1.400 als SE verbunden. Und ich kann jetzt weitermachen und alle Assets auf diesem Server manipulieren . Das Coole an Your Data Studio ist, dass Sie damit sogar Ihre Verbindung kategorisieren können. Du siehst hier also, dass ich einige meiner Kategorien aufräumen kann. Ich kann einfach eine neue Servergruppe erstellen. Und ich sage wie Azure. Und dann kann ich all meine Augen, deine Verbindungen, in diese Gruppe ziehen . In Ordnung, ich habe also weniger Lärm und kann leichter finden , was ich will. Ich kann es zusammenbrechen. Und dann kann ich eine weitere für Local erstellen. In Ordnung? Und dann kann ich den lokalen Gastgeber dort unterbringen. Ich könnte sogar angeben, dass einer dunkler ist als dieser keine Ärzte. Das sind also alle meine lokalen Instanzen. Wie Sie sehen können, habe ich mehrere lokale Instanzen und habe versehentlich die Verbindung zum Dunklen getrennt. Also werde ich einfach in die Vergangenheit zurückkehren UND mich jetzt dieses Mal an den Parser erinnern, damit ich es nicht jedes Mal machen muss. Und Sie werden hier sehen , dass sie sehen sie die Verbindung verschlüsseln sollten. Ich kann wahr oder falsch sagen. Vertraue dem Serverzertifikat, dieser Klinik. Und ich bin bereit, wieder zu gehen. So stellen wir mithilfe des Azure Data Studio eine Verbindung zu unserer Datenbank her. Wenn wir jetzt zurückkommen, werden wir tatsächlich der Erstellung der Datenbank beginnen. 19. Datenbank erstellen: In Ordnung, lassen Sie uns mit der Erstellung unserer Datenbank beginnen. Also werde ich eine neue Abfrage öffnen und diese neue Abfrage wird gegen unsere Verbindung gerichtet sein. Wir können die Verbindung jederzeit ändern , indem wir sie nehmen und dann die andere Verbindung wählen, die wir wollen. Aber das ist in Ordnung. Wir machen einfach so weiter, wie es jetzt ist. Sie werden feststellen, dass diese Benutzeroberfläche der Visual Studio Code-Oberfläche sehr ähnlich ist . In Ordnung, also viele Tastenkombinationen zum Arbeiten können wir steuern, eine Nahsteuerung minus. Wir können die Verbindungen andocken , um zu entscheiden, ob wir uns mehr Platz geben möchten. Es ist also eine sehr vertraute Benutzeroberfläche und sie ist sehr sauber und einfach zu bedienen. Jetzt erstellen wir eine Datenbank namens School Management DB. In Ordnung? Und diese Datenbank basiert gewissermaßen auf der Datenbank, die in meinem SQL-Kurs verwendet wurde. Du kannst das also überprüfen. Wenn Sie mit SQL und SQL Server nicht sehr vertraut sind, können Sie sich diesen Kurs ansehen. Wenn Sie jedoch bereits einige Datenbankkenntnisse haben werden Sie sich wie zu Hause fühlen. Und ich werde es im Laufe der Zeit erklären , damit Sie den Überblick behalten. Die erste Anweisung , die wir schreiben wollen, ist also eine Datenbank erstellen. Dadurch können wir den Namen einer Datenbank angeben , die wir erstellen möchten. Ordnung, also wollen wir eine Datenbank namens School Management DB erstellen . Dann müssen wir ein Ziel spezifizieren. Und dann müssen wir die Datenbank verwenden , die wir gerade erstellt haben. Und wenn wir ein Skript schreiben, können wir jede Zeile ausführen. Also kann ich das hervorheben und „Run“ sagen, dann das hervorheben und „Lauf“ sagen. Denn was passiert ist, dass wenn es hier ankommt, nicht mehr existiert, oder? Also solange das nicht Ron ist, gibt es das nicht. Wir werden also diese rote, verschnörkelte Linie sehen, die einen Fehler darstellt. Aber das ist in Ordnung, denn wir können einfach das gesamte Dokument schreiben und es wird von Zeile eins, Zeile zwei, Zeile drei und dann von allem anderen ausgeführt . Wir müssen uns also keine Sorgen um diese rote, verschnörkelte Linie machen, oder? Nein. Dann sehen wir Tabelle erstellen. Am ersten Tag werde ich ein Studententeam erstellen, okay. Erstellen Sie also Tabellen-Schüler und es werden Klammern geöffnet und geschlossen. Und dann werden wir dort einige Spalten spezifizieren. Also sage ich ID INT. Ich empfehle immer, wenn Sie eine Datenbank erstellen, immer eine von der Datenbank generierte Primärschlüssel-ID-Spalte zu haben . In Ordnung? Also hier sehe ich, dass die ID eine Ganzzahl ist, es ist ein Primärschlüssel und es sollte eine Identitätsspalte sein. Identität bedeutet, dass sie Laufe der Zeit automatisch zunimmt. Dann noch andere Dinge, die die Schüler haben werden, unseren Vornamen, Nachnamen, Geburtsdatum. Und ich werde sie eigentlich einfach anschließen. In Ordnung, ich langweile dich also nicht mit dem Tippen. Sie können eine Pause einlegen und diese zusätzlichen Spalten replizieren. Vorname, wir verwenden n var char 50, und es darf nicht null sein, oder? Das Gleiche gilt für Nachname, Geburtsdatum. Wir werden Deet sehen und wir werden zulassen, dass es Nase ist. Ich werde keinen Wert angeben, der nicht Null ist. Das heißt, wenn ich weiß, dass hier reingeht, ist das in Ordnung. In Ordnung? Dann ist der nächste Tisch, den wir haben werden, Vorlesungen. Für Vorlesungen werde ich einfach dieselbe Art von Aussage machen , außer dass wir nur FirstName und LastName verwenden. Okay, also ich hätte diesen Raum einfach kopieren können , dass er die Schüler zu Vorlesungen gemacht hat, und den Takt entfernen können. Sie werden sehen, dass sie sich in ihrer Struktur sehr ähnlich sind. Und dann ist der letzte, den wir wollen, vier Gänge. Also, wie ich schon sagte, es ist ein Schulmanagementsystem für eine winzige Schule. Sie wollen nur verfolgen können, wer die Schüler sind. Sie wollen nachverfolgen , wer die Vorlesungen sind. Und dann wollten sie nachverfolgen , welche Kurse angeboten werden. Wie heißt der Kurs? Wie lautet der Code für den Kurs? Und dieser Schnee wird eine einzigartige Einschränkung haben. Das bedeutet also, dass keine zwei Kurse jemals den gleichen Akkord haben sollten. In Ordnung? Dies könnte wohl auch für den Namen einzigartig sein, aber Geschäftsregeln werden diese Entscheidungen bestimmen. Und dann die Anzahl der Credits , die dieser Kurs haben wird. Es ist ein einfaches, sehr, sehr einfaches Schulverwaltungssystem. Jetzt haben wir also unser Datenbankskript erstellt. Ich weiß, dass wir die Datenbank tatsächlich erstellen wollen, denn wenn wir nochmal hinschauen, sind die Datenbanken leer. Wenn wir also, wie gesagt, auf Ausführen klicken, wird das gesamte Skript ausgeführt und unsere Datenbank erstellt. Wir erhalten also diese visuellen Hinweise, die die Ausführung gestartet haben und dann wurde alles erfolgreich abgeschlossen. Wenn ich also Datenbanken aktualisiere , zu meinem Schulmanagement EB gehe und dann kann ich einen Drilldown durchführen und mir die vorhandenen Tabellen ansehen . In Ordnung, so einfach ist es also, eine Datenbank mit Skripten zu erstellen. Und das Coole an Skripten, falls Sie mit SQL und Scripting nicht so vertraut sind, ist , dass ich diese Datei speichern und zu einem späteren Zeitpunkt wiederverwenden kann , oder? Es ist also nur eine Skriptdatei. Es ist nur eine Textdatei, die Anweisungen enthält als Loch zum Erstellen einer Datenbank, ich kann sie in meinem lokalen Dateisystem speichern. Wenn ich diese Datenbank erneut benötige, kann ich den Namen entweder hier ändern oder noch einmal, sie durchläuft all diese Szenarien in meinem SQL-Kurs. Jetzt habe ich die Datenbank erstellt. Mein nächstes Ziel ist es, es tatsächlich meiner Anwendung zu verbinden. Die Datenbank und sie läuft in Dunkler Equaled waren also leicht auf einem anderen Server, oder? Das spielt im Großen und Ganzen keine Rolle. Was jedoch wichtig ist, ist, dass ich meine Anwendung benötige , um diese Datenbank zu sehen und mit ihr interagieren zu können. Wir werden uns also ansehen, wie wir eine Bibliothek namens Entity Framework nutzen können , um dies mit unserer Webanwendung zu erreichen . 20. Scaffold Database mit Entity Framework Core: In Ordnung Leute, also haben wir unsere Datenbank erstellt und alles, was wir brauchen , um über unsere Anwendung eine Verbindung zu ihr herzustellen. Und es gibt nur wenige Dinge, die wir nachrüsten oder anwenden müssen , um dies zu ermöglichen. Es wird also Entity Framework verwenden, das in unserem Flaggschiff von Microsoft integriert ist , oder für Datenbankkonnektivität und -manipulation. ORM ist also die Abkürzung für Object Relational Mapper. Sie zu Entity Framework in unser Projekt, wir können zur CSS-Datei übergehen. Wir könnten sie hier manuell hinzufügen, aber wir verwenden eigentlich nur die Dotnet-CLI. Und Sie können sehen, was in dieser CSV-Datei passiert , wenn ich diese Befehle ausführe. Also der Befehl, den ich ausführen werde, erhöhe ich einfach und erhöhe die Realisten sind Immobilien und die Displaygröße. Der Befehl, den wir hier ausführen, ist also dotnet add package. In Ordnung? Und das wird tun, ist den Paketmanager namens New Gets zu kontaktieren. Du wirst dich an neue Git-Repositorys wenden und das Paket, die neueste Version des Pakets, erhalten . Wenn wir in diesem Fall nicht spezifizieren, werde ich keine Version angeben. Und was ich versuchen werde, ist das Paket für Microsoft dot Entity Framework Core SQL Server. Dieses Paket können wir einfach in dotnet hinzufügen Paket Microsoft aber Entity Framework, Core SQL Server. Dieses Paket enthält alle Konnektoren und den gesamten Code, den wir benötigen, um die Kommunikation mit einer SQL Server-Datenbank zu erleichtern . Entity Framework ist Open Source, plattformübergreifend und unterstützt auch verschiedene Arten von Datenbanken. Wenn Sie also Sequel Light oder Postgres oder MySQL verwenden, gibt es Bibliotheken mit Erweiterungen für Pakete nicht für Entity Framework Core für diese speziellen Datenbanken. In diesem Fall verwenden wir SQL Server. Also mache ich einfach weiter, gebe das ein und drücke die Eingabetaste und gebe dann ein paar Sekunden. Und dann geht er los und es wird das Pocket von NuGet herunterladen und sie sind in der RCS-Bridge-Datei. Sie sehen einen neuen Knoten, der besagt, dass wir wissen, dass wir eine Paketreferenz auf die Bibliothek haben , die Wir haben gerade ein Referenztool erstellt, und die Version ist 7.0. In Ordnung, Entity Framework Core Seven ist mit Dotnet Seeks kompatibel. Selbst wenn Sie Dotnet Seeks verwenden, können Sie Version sieben von Entity Framework Core verwenden. Jetzt würde ein anderes Paket entworfen, das ich installieren möchte, bevor ich weitermache . Also drücke ich einfach nach oben, um die neueste Lira und den Befehl zu erhalten . Und dann werde ich den SQL Server aus dem Befehl entfernen und ihn durch das Wort Design ersetzen. Und dann drücke ich die Eingabetaste. Und dann wird es dasselbe tun, Kontakt aufnehmen, das Paket holen und dann unsere CSV-Datei mit diesem Knoten aktualisieren . Hier werden Sie also sehen, dass es außerhalb der Bucket-Referenz noch ein paar Dinge hinzuzufügen gibt, aber das ist in Ordnung. Jetzt, da wir Entity Framework in unserem Projekt haben, müssen wir eine sogenannte Verbindungszeichenfolge hinzufügen. Verbindungszeichenfolge ist also wie eine Adresse, oder sie enthält eine Reihe von Anweisungen, mit denen die Anwendung oder wie sie eine Verbindung zur Datenbank herstellen kann. Das geht also in unsere up settings.js, JSON-Datei. Hier. Ich werde das einfach ändern, und das ist nur eine normale JSON-Datei, oder? Es ist also die CMG-Syntax. Wir wissen, dass es sich um ein Schlüsselwertpaar handelt. Connection Strings ist ein Abschnitt. Sie könnten also einfach anfangen Verbindungszeichenfolgen einzugeben und die Eingabetaste drücken und es wird für Sie ausgefüllt . Lass mich das noch einmal machen. Verbindungszeichenfolgen werden eingegeben und es füllt, es hält. In Ordnung? Dann könnten Sie innerhalb der Verbindungszeichenfolgen mehrere Datenbanken haben. Sie können also so viele Schlüsselwertpaare von Verbindungszeichenfolgen haben so viele Schlüsselwertpaare , wie Sie benötigen. Diese erste Verbindungszeichenfolge , die ich für diese Anwendung benötige , ist eine, die eine Verbindung zur Schulverwaltung dB herstellt. Also öffne und schließe Anführungszeichen. Und dann schreibe ich dort den Namen der Verbindungszeichenfolge, die School of Management DB-Verbindung ist. Okay, dann haben wir die Werte also Doppelpunkt und dann öffnen und schließen Anführungszeichen. Also hier haben wir tatsächlich die Verbindungszeichenfolge eingegeben. Unsere Verbindungszeichenfolge lautet also Server gleich und dann die Adresse des Servers, die in unserem Fall das localhost-Komma 1.400 ist, weil wir unsere dunklere gehostete Datenbank verwenden , die wir konfiguriert. Dies ist jedoch nur die Adresse der Datenbank. Wenn ich also meine lokale Host-Instanz verwenden würde, würde ich Localhost sagen. Wenn ich meine SQL Express-Instanz verwenden würde, würde ich SQL Express sagen, oder? Wenn Sie also SQL Express verwenden und nicht dunkler, dann würde diese Adresse so aussehen. In Ordnung, also verwende ich wieder dunkler, localhost 1.400. Und dann spezifizieren wir die Datenbank. Die Datenbank hier, ich glaube, wir haben sie Schulmanagement genannt. Eb kann jederzeit zurückgehen und überprüfen, wie du es nennst. Das ist also eine Datenbank. Und beachten Sie, dass wir Semikolons verwenden. Und dann müssen wir eine vertrauenswürdige On-The-Score-Verbindung sehen . Wir müssen also angeben, ob es sich um eine vertrauenswürdige Verbindung handelt, was ich an dieser Stelle einfach falsch sagen werde, weil die Datenbank nach bestimmten Sicherheitsanforderungen sucht , die erfüllt werden und wir können uns das für mehr Produktionsumgebungen als vier Entwicklungen pro Sitzung reservieren . Also im Moment werde ich nur sagen , dass das falsch ist. Und dann haben wir eine weitere Einstellung , die besagt, dass mehrere aktive Ergebnisse gesetzt wurden. Und das gibt im Grunde an, ob mehrere Verbindungen gleichzeitig erlaubt sind. Ja. Und dann ist die letzte Option verschlüsseln gleich falsch. Nun, nicht endlich, aber die letzte sicherheitsrelevante Frage ist Encrypt Equals Falls, insbesondere in EF Core. Was passiert ist, dass in der neuesten Version von EF Core dies standardmäßig auf true gesetzt wird, sodass Sie ausdrücklich angeben müssen, dass es falsch ist, oder wird davon ausgegangen , dass es verschlüsselt ist und Wenn es dann nicht richtig konfiguriert ist, Ihre Verbindung nicht hergestellt. Diese Verbindung wird nur diese beiden Probleme in unserer Entwicklungsumgebung mit sich bringen. Dann müssen wir den Benutzernamen und das Passwort angeben. Jetzt ist dieser Teil optional. Benutzer-ID und Passwort sind optional, wenn Sie SQL Express verwenden oder wenn Sie eine lokal installierte Instanz von SQL Server verwenden . Das bedeutet, dass standardmäßig die Windows-Authentifizierung für Sie verwendet wird die Windows-Authentifizierung für Sie müssen keine Benutzer-ID und kein Passwort angeben. In dem Fall, dass Sie einen Benutzer verwenden müssen , wie Sie SQL Login verwenden, unabhängig davon, ob Sie ihn so konfiguriert haben, oder ob Sie Docker verwenden, wo es keine wirkliche Option gibt, etwas anderes zu tun, dann Sie müssen auf jeden Fall die Benutzer-ID angeben. Und dann musst du das Passwort angeben und ich habe mein Passwort vergessen. Lass mich einfach wieder zu dunkler springen und in mein Bild schauen. Da haben wir's. Klicken Sie weiter auf die falsche Stelle. Also leihe ich mir diesen Passwortwert für meine Verbindungszeichenfolge aus, denn immer ich eine Verbindung herstellen würde, wie auch immer ich eine Verbindung herstellen würde, so muss die Anwendung eine Verbindung herstellen. Dann stellen wir mit dieser Verbindungszeichenfolge tatsächlich eine Verbindung zur Datenbank und rufen die Datenbank ab. In dieser Lektion setzen wir also nicht nur eine Verbindungszeichenfolge auf, sondern wir werden auch das sein, was Husten verursacht, die Datenbank in unsere Anwendung einbinden. Wir haben einen so genannten Database-First-Ansatz gewählt, was bedeutet, dass wir eine Datenbank erstellt haben und dann die Anwendung damit verbinden werden. Die Alternative könnte sein, dass wir diese Anwendung haben und Code verwenden, was bedeutet, dass wir Code, Klassen und Modelle schreiben. Und dann verwenden wir das, um die Datenbank darüber zu informieren, wie sie aussehen sollte. Das heißt Code First. Andere Kurse, in denen ich Code für uns in diesem Kurs zeige , bin ich mir sicher, zuerst in der Datenbank, damit wir ein Gefühl dafür bekommen, wie wir eine bestehende Datenbank einbauen können, weil die Datenbank oft schon da und wir müssen entweder die Anwendung aktualisieren oder eine Anwendung für die Datenbank erstellen. Wir müssen das Ganze kennen, um eine bestehende Datenbank betrachten und in unserer Anwendung modellieren zu können. Also werde ich einfach CLS machen. Wir haben hier also ein neues Terminalfenster. Ihr seid Zerstörungen. Und dann lassen Sie uns ein neues Dotnet schreiben. Stephen. Aber bevor wir das tun, müssen wir tatsächlich das EF-Toolset in unserer Dotnet-CLI installieren . Also muss ich Dotnet New Install sagen, und dann installiere ich es einfach global. Also Bindestrich, Bindestrich global. Und dann heißt das Tool, das ich installiere dotnet high F und E f. Sobald ich das gemacht habe, können Sie sehen, dass ich es bereits installiert habe. Auf meiner Dotnet-CLI ist das bereits installiert, aber Ihre wird wahrscheinlich die Bewegungen ausführen und tatsächlich alle unterstützenden Bibliotheken für dieses Tool abrufen . Sobald dies jedoch erledigt ist, können wir nun mit unseren Dotnet EF-Gerüstbauarbeiten fortfahren . Wir können also den Dotnet EF BB-Kontext sagen. In Ordnung? Und dann sagen wir Gerüst. Ein Gerüst bedeutet, dass ich mir ansehe was existiert, und dann habe ich es in der Anwendung modelliert. Und dann brauche ich, um herauszufinden, was ich brauche die Verbindungszeichenfolge. Also werde ich genau diese Verbindungszeichenfolge kopieren, die wir einfach in die App-Einstellungen eingefügt haben, diese JSON-Datei. Und ich werde es hier einfügen. In Ordnung, nett und einfach, aber wir haben es schon geschrieben. Und hoffentlich ist es schon korrekt, oder? Nachdem wir das haben, werden wir sehen, welcher Treiber oder welche Art von Datenbank. Also muss ich den Datenbanktyp über die Bibliothek, das Meer und Microsoft aber Entity Framework, Core dot SQL Server angeben den Datenbanktyp über die Bibliothek, das Meer und Microsoft aber Entity Framework, . Und haben Sie keine Angst vor dem Kopieren und Einfügen, denn das ist viel Tippen. Selbst dafür könnten Sie zurück zur USCS-Broach-Datei springen, sie kopieren und dann einfügen Es ist das, was Sie effizienter macht. Dann gebe ich an , dass dies in ein Verzeichnis namens data ausgegeben werden soll. In Ordnung, also kann ich Bindestrich 0 sehen. Und geben Sie dann den Namen des Ordners an, bei dem es sich um Daten handelt. Also wieder einmal, Dotnet EFL möchte sich mit dem DB-Kontext auseinandersetzen. Wo auch immer diese Datenbank ist, entscheiden Sie sich für diese Datenbank. Das ist es, was ich bauen möchte. Dieser DB-Kontext ist aus. Wir verwenden einen SQL-Server. Und wenn Sie bereit sind, Ihre Dateien zu generieren, laden Sie sie in einen Ordner namens data hoch. Ich kann die Eingabetaste drücken. Und sobald ich die Eingabetaste drücke, sehen wir entweder etwas, das gut aussieht, oder etwas, das schlecht aussieht. Ein nettes ist immer gut. Hier sehen wir also, dass wir einen Fehler erhalten haben , weil es sich nicht mit dem Benutzer anmelden konnte. Also die Antworten, dass die Anmeldung für diesen Benutzer fehlgeschlagen ist, und ich, Sie haben diese Erfahrung wahrscheinlich nicht gemacht. Aber das liegt daran, dass ich hier die doppelten Anführungszeichen verwende. Lassen Sie mich diese in einfache Anführungszeichen ändern. In Ordnung, beachte, merke den Unterschied. Aufgrund meiner Passwortwahl habe ich die Dollarzeichen. Wenn ich also doppelte Anführungszeichen verwende, werden die Dollarzeichen codiert, um zu zeigen, dass sie nicht als buchstäbliche Zeichenketten angesehen werden. Wenn ich ein einzelnes Anführungszeichen verwende, ist alles in einer Farbe. Das sind also kleine Kleinigkeiten , die Sie durch Versuch und Irrtum herausfinden. Also lass mich die Eingabetaste drücken und das noch einmal versuchen. Dieses Mal. Okay. Wir haben eine kleine Warnung erhalten und es steht, dass das Potenzial, empfindliche Entzündungen in Ihrer Verbindungszeichenfolge zu schützen , Sie sollten es aus dem Quellcode entfernen. Okay? Wenn ich jetzt zu meinem Explorer gehe, kann ich nach oben scrollen und hier einen neuen Ordner namens data sehen. Und wenn ich es erweitere, sehe ich Klassendateien, die meinen Tabellennamen entsprechen. Und ich werde diese Datei sehen, die als DB-Kontextdatei bezeichnet wird. Nun, in diesen DB-Kontexten sind wir im Grunde Modellieren oder Datenbanken. Dieser DB-Kontext ist also die Verkörperung unserer Datenbank. In früheren Versionen vor dotnet Core und EF Core könnten wir dieses Diagramm generieren, etwas, das wie ein ERD-Entitätsbeziehungsdiagramm aussieht und diese Tabellen tatsächlich so anzeigen würde , wie sie sind in der Datenbank vorbei, wenn das Diagramm nicht vorhanden ist. Und sogar hinter dem Diagramm befand sich eine Datei namens DB-Kontextdatei, die ungefähr so aussieht. In dieser DB-Kontextdatei werden also die verschiedenen Teile der Konfiguration skizziert , die benötigt werden. Wir sehen hier, wo es in dB-Sätzen initialisiert ist. Jede dB-Sitlinie steht also für die Tabelle. Der Name der Tabelle lautet also students, aber das DB-Set basiert auf den Modellen. Die Schüler haben alle Eigenschaften aus der Tabelle mit dem Namen Schüler übernommen und eine Klasse generiert , die dieser entspricht. Also die Eigenschaften aus der Datenbank oder ID, Vorname, Nachname und Geburtsdatum. Sie entsprechen alle dem was in der Datenbankdefinition steht. Ordnung, dieses Diagramm stellt also die Code-Version unserer Datenbank dar. Beachten Sie nun, dass wir denselben Fehler oder dieselbe Warnung sehen , die wir in der CLI direkt über der Verbindungszeichenfolge erhalten haben . Nun, das ist dieselbe Koordination und der gleiche Stream, wir hier im Befehl verwendet haben, wir haben sie auch schon im Upsetting. Ich möchte wirklich nicht codieren. Also, was ich tun werde, ist einen weiteren Befehl auszuführen , um die CLI zu generieren. Habe dieses Diagramm oder eher diesen Kontext generiert , lassen Sie mich einfach ein CLS machen. Ich habe einfach nach oben gedrückt und das letzte Mal abgerufen, als wir auf dem einen Schnee waren. Alles was es zu beachten gibt hier. Erstens, ich habe schon Dateien. Wenn ich erneut versuche, diesen Befehl auszuführen, erhalte ich eine Fehlermeldung, weil die Dateien, die ich zu generieren versuche, bereits existieren. Nun, das kann ein Problem sein, wenn Sie tatsächlich Änderungen vornehmen möchten, also die Datenbank ändert, dann möchten Sie, dass der Code widerspiegelt , dass Sie diesen Befehl erneut ausführen müssen. Jetzt sagen sie also , dass wir das Force-Flag verwenden müssen , um die Dateien zu überschreiben. Das bedeutet also, dass ich im SAM-Befehl einen Bindestrich hinzufügen muss, oder? Oder Bindestrich, Bindestrich. Das bedeutet was auch immer, auch wenn es schon da ist, ich möchte einen Override. Als Nächstes möchten wir einen Befehl eingeben, der Sie auffordert, dies nicht in die Konfiguration oder den Konfigurationsabschnitt aufzunehmen. Das Sexual mit der Verbindungszeichenfolge brauchen wir nicht. Ich kann also Bindestrich, Bindestrich, Bindestrich sehen , Konfiguration kennen, oder? Wenn ich die Eingabetaste drücke, erhalte ich eine Fehlermeldung. Und das liegt daran, dass es mehr Konfiguration geht und ich entschuldige mich, es geht nicht um die Konfiguration. Lass uns das noch einmal versuchen. Also nicht zur Konfiguration und dann wird gebaut und dann ist es fertig. Und wenn wir zu den Werten unseres Kontextes zurückkehren, stellen Sie sicher, dass wir diese Methode bei der Konfiguration nicht mehr haben. In Ordnung, wir haben also kein Modell das erstellt, was wir nicht konfiguriert haben. Das Teil brauchen wir nicht. Wenn wir also Änderungen an unserer Datenbank vornehmen, müssen wir diesen Befehl ausführen. Es wird gehen und jedes Mal einfach alle Dateien für uns neu generieren. In Ordnung? Nun die letzte Sache, um sicherzustellen, dass unsere Anwendung über die Datenbank Bescheid weiß, denn ja, die Dateien sind da, aber es gibt immer noch kein wirkliches Wissen über die eigentliche Datenbank und Anwendung. Wir müssen zu unserer program.cs gehen und dann müssen wir das tun, was wir Registrierung oder Dependency Injection oder Distribution nennen . Wir müssen also registrieren , dass diese Datenbank in der Anwendung existiert, damit wir Entity Framework verwenden und darauf zugreifen können. Also zunächst sage ich, var con ist gleich. Und dann gehe ich in unsere Konfigurationsdatei. So kann ich die Konfiguration von Builder-Hunden, die Konfiguration zum Zeitpunkt der Initialisierung der Anwendung oder die Behinderung sehen Konfiguration zum Zeitpunkt der . Es sucht nach allen App-Einstellungen und allen anderen Einstellungsdateien und rollt sie einfach in dieses eine Objekt, erstellt die Konfiguration. Und dann gibt es eine Methode mit der Aufschrift get connection string, nice and clean. Und dann müssen wir nur noch den Namen der Verbindungszeichenfolge kennen . Also, wenn du den Namen vergessen hast, ist das in Ordnung. Springe rüber, schnapp dir den Namen, kopiere, springe zurück und füge ihn ein. Jetzt haben wir also die Verbindungszeichenfolge. Wir müssen den DB-Kontext tatsächlich hinzufügen. Also das Startup, sagen wir, ein Builder Dot Services. Und es wird Punkt AD B2B-Kontext heißen. Und wir werden es in den DB-Kontext stellen. Und ich werde einfach die Kopie des Namens durchgehen und ihn hier einfügen. Also fügen wir diesen DB-Kontext hinzu, oder? Dann müssen wir die Optionen weitergeben. Also ein Punkt, es ist nur ein Lambda-Ausdruck. Wenn Sie mit Lambda-Ausdrücken nicht vertraut sind, werden wir viele Türen machen. Aber das ist ein Lambda-Ausdruck. Nirgendwo sagen wir, verwenden Sie SQL Server. Und hier ist die Verbindungszeichenfolge. Ordnung, jetzt fehlen mir einige Referenzen. Klicken Sie einfach darauf und sagen Sie Kontrollkanäle. Dadurch kann ich diese Nutzungsanweisung hinzufügen. Da haben wir's. Und dann hier wieder Onshore-Daten, und es ermöglicht mir, diese mithilfe einer Anweisung hinzuzufügen. Und nein, es gibt keine Pfeile. Im Grunde sehen wir also wann die Anwendung startet und mir die Verbindungszeichenfolge gepackt hat. Verwenden Sie dann die Verbindungszeichenfolge, um eine tatsächliche Verbindung zu der Datenbank zu initialisieren eine tatsächliche Verbindung zu der Datenbank zu die dieser DB-Kontext ein Modell ist. Und hier ist die Verbindungszeichenfolge, die Sie verwenden sollten. Ordnung, das nennen wir jetzt den Optionsbereich. Das wird also in unseren DB-Kontext weitergegeben , wenn wir Optionen sehen. In Ordnung? Also zeige ich Ihnen nur all die kleinen beweglichen Teile, damit Sie verstehen können, wie alles zusammenhängt. Jetzt haben wir also tatsächlich eine Verbindung zwischen unserer Anwendung und SQL Server hergestellt . Jedes Mal, wenn wir einen Dotnet-Lauf von nun an ausführen, wird diese Verbindung tatsächlich hergestellt, wenn die Anwendung gestartet wird. Als Nächstes wollen wir mit der Erstellung von Funktionen für die Interaktion mit der Datenbank beginnen Erstellung von Funktionen . Weil wir hier das haben, was wir Modelle der Datenbank nennen werden , oder? Was wäre, wenn wir anfangen würden, Kurse zu erstellen, Vorlesungen zu erstellen, Studierende zu gründen? Wir brauchen also Controller, wir brauchen Views, wir brauchen Funktionen dazwischen, um das weiterzugeben. Lektion schauen wir uns an, wie wir nächsten Lektion schauen wir uns an, wie wir damit beginnen können. 21. Scaffolding und -Controller – Teil 1: In dieser Lektion bauen wir unseren Controller auf und sehen uns das Wort gerissen an. Wir haben es schon einmal benutzt und es bedeutet im Grunde, dass wir Code generieren, der auf etwas basiert, oder? So konnten wir Gerüste für den DB-Kontext erstellen, indem DB-Kontext und die Klassendateien generierten, Modelldateien, die auf unserer Datenbankstruktur basieren. In dieser Situation werden wir Gerüststeuerungen und Ansichten entwickeln, die auf einem dieser Modelle basieren. In Ordnung, denken Sie daran, dass wir den Model View Controller haben. Jetzt haben wir das Modell. Also der Datenordner, alles darin steht für die Modelle. Diese Klassendateien sind also mündliche Modelle, Vorlesungen und Studierende, sind unsere Modelle. Diese stellen die Daten dar. Jetzt benötigen wir die Ansichten , die es uns ermöglichen, die Daten anzusehen und mit den Daten zu interagieren, die Benutzeroberfläche, die sich auf das Modell bezieht. Und wir benötigen den Controller, um den Datenverkehr und die Anfragen sowie jegliche Logik im Zusammenhang mit der Manipulation der Daten und der Anzeige der Ansicht zu kontrollieren Datenverkehr und die Anfragen sowie jegliche Logik im Zusammenhang mit . diese zu erstellen, haben wir nun die Möglichkeit, manuell einen Controller zu erstellen, manuell eine Ansicht zu erstellen und diese zu verkabeln. Und ich denke, dass es an dieser Stelle, besonders wenn Sie ein Anfänger sind, besonders wenn Sie ein Anfänger sind, besser ist, den generierten Code zu zeigen und Ihnen das zu erklären. Und dann werden Sie besser verstehen, was es braucht , um es von Grund auf neu zu erstellen, oder? Dotnet CLI ermöglicht es uns also, den gesamten Code zu erstellen, der es uns ermöglichen würde , grundlegende Crud-Operationen auszuführen, crud, create, read, update, delete, in Ordnung. Also Ansichten, Controller und Funktionen, die es uns ermöglichen, Datensätze zu erstellen, Datensätze zu lesen, Datensätze zu aktualisieren oder Datensätze zu löschen, basierend auf einem dieser Modelle und dessen, was es in der Datenbank darstellt. Also genug von meinem Monolog, lassen Sie uns darauf eingehen. Als erstes möchten wir ein anderes Tool installieren, nämlich den ASP NET-Codegenerator. Also werde ich das Seitenteil zusammenklappen und meine CLI etwas größer machen. Und wir werden auch CLS machen. Werde den ganzen Lärm los. Da haben wir's. In Ordnung, jetzt müssen wir den Befehl mit der Aufschrift dotnet tool ausführen . hast du schon einmal gesehen. Installieren. Und ich werde dafür sorgen, dass Sie Bindestrich, globalen Bindestrich wie beim letzten Mal oder Bindestrich g sagen können . Ordnung. Dann wurden im dotnet.net Hyphen ASP, NET Hyphen Code Generator Tool installiert . In Ordnung, also lass uns die Eingabetaste drücken und das laufen lassen. Okay, nun, was würde für dich laufen? Ich habe es bereits installiert, in Ordnung, also weil wir es installiert haben, erhalte ich diese Fehlermeldung. Sie hätten jedoch tatsächlich eine sehr ähnliche Erfahrung wie bei der Installation des Dotnet EF2. In Ordnung. Nachdem wir das installiert haben, müssen wir einen Befehl ausführen, der es uns ermöglicht, den Controller auf der Grundlage des Modells zu erstellen. Und wir wollen die Sichtweisen vermitteln, die uns helfen , Crowd-Operationen durchzuführen. Aber bevor wir das tun, brauchen wir noch ein paar Pakete, oder? Also habe ich schon den Entity Framework SQL Server. Wir haben bereits Entity Framework. Gestaltung. Was wir brauchen, wissen dotnet Paket hinzufügen. Und wir wollen die Microsoft Visual Studio Dot Web Dot Cogeneration dieses Design. Das eine ist also ein Vielfaches. Drücken Sie Pause und stellen Sie sicher, dass Sie es so zurückschreiben , wie Sie es auf dem Bildschirm sehen, oder? Also dotnet Paket hinzufügen, Microsoft Visual Studio Dot Web Dot Cogeneration , das entworfen hat. Dieses Paket unterstützt tatsächlich das Ziel der Kraft-Wärme-Kopplung, dass wir, sobald das läuft und es erfolgreich war, einfach CLS machen werde. Und was wir dann tun können, nachdem wir das aufgenommen haben , ist weiterzumachen und unser Gerüst zu bauen. Wenn Sie Mac OS X oder Mac OS oder Linux verwenden, müssen Sie diesen Befehl ausführen, wobei Sie sehen, dass der Exportpfad gleich Dollar Sign Home, Slashdot, Net, Dotnet ist. Richtig. Da haben wir's. Dot.NET- oder Full-Stop.NET-Schrägstrich-Tools und dann Doppelpunkt für Dollarzeichen. In Ordnung. Also im Grunde für OS, Mac OS und Linux, wo der Basis-Typ einfach hier sitzt, und das sollte Dollar Sign Home sein, kein Hashtag Home. Ich entschuldige mich. Das heißt also nur, dass sich das Zuhause der Projektdatei oder der Datei program.cs im Stammverzeichnis befindet, oder? Die Dotnet-Tools sollten also auf die Wurzel des Projekts zeigen. Wenn Sie also Mac OS oder Linux verwenden, müssen Sie diesen Befehl zuerst ausführen. Nachdem Sie diesen Befehl ausgeführt haben, ist dieser nächste Teil jedoch für alle, die sagen , dass dotnet die B-Net-Dashcode-Generierung ist , vier Generationen. Da haben wir's. Steuerung. Stimmt das? Jetzt sehen wir Dotnet und wir wissen, dass dies der Name des Tools ist, weil wir es gerade installiert haben. Und wir wollen einen Controller erstellen. Dann können wir Dinge wie den Namen eingeben. Also kann ich den Namen des Bindestrichs sagen. Und lassen Sie uns mit dem Controller für die Kurse beginnen. Wir wollen einen Controller für unseren Kursbetrieb erstellen. Also ich werde sehen, dass der Name des Bindestrichs Betrug ist, ist natürlich, der Kurs stimmt. Natürlich sein Controller, denn das ist die Namenskonvention. Dann können wir das Modell spezifizieren. Also ich kann Dash m sagen. Und welches Modell verwenden wir? Nun, das Modell, das wir verwenden, ist natürlich, okay? Wir sehen also einen Bindestrich m und dann sehen wir Kurs. In Ordnung? Dann müssen wir den Datenkontext oder den Datenkontext spezifizieren. Und ich möchte nicht alles manuell ausschreiben, also springe ich einfach da rüber, kopiere den Namen und füge ihn in die Befehlszeile ein. Da haben wir's. Dann haben wir noch ein paar andere Dinge. Das wird also tatsächlich diesen Controller generieren, aber ich möchte, dass er in den spezifischen Ordner der Kontrollwarnungen verschoben wird, oder? Also werde ich nur den Bindestrich sehen, relative Ordnerpfad des Bindestrichs entspricht Controllern. Nun, es gibt kein Gleichheitszeichen. Ich entschuldige mich, lassen Sie mich nicht gleich sagen. Dann können wir Dinge angeben, die wir im Standardlayout verwenden möchten . Und wenn wir auf Skriptbibliotheken verweisen wollen, so generiert die Kombination all dieser Dinge den Controller mit diesem Namen unter Verwendung dieses Modells und dieses Datenkontextes. Und es öffnet die Controller für diesen Ordner. Aber dann sehen wir, dass das Standardlayout verwendet wird, was bedeutet, dass die Ansichten, die zusammen mit einem Controller generiert werden zusammen mit einem Controller generiert werden , die Option annehmen, bei der wir nur die Standard-Layoutdatei verwenden wollten. In Ordnung, wir könnten auch andere Optionen haben. Diese anderen Optionen werden Sie normalerweise in der Benutzeroberfläche sehen , wenn Sie Visual Studio verwenden. Also hier können wir Referenzskriptbibliotheken sehen. Lass mich es zusammenbrechen. Referenzskriptbibliotheken und dann können wir sagen wie falsch. Ordnung, das sind andere Optionen, die wir uns ansehen können. Wenn Sie alle Optionen sehen möchten, können Sie natürlich immer dotnet, ASP, NET, Bindestrich, Cogeneration Dash H oder Control H sagen Bindestrich, Cogeneration Dash H , um alle Ihre Optionen zu sehen. Lassen Sie uns jedoch damit fortfahren. Ich drücke die Eingabetaste. Oh mein Gott, ich entschuldige mich. Ich habe diesen Befehl völlig falsch geschrieben. Das sollte keine Kraft-Wärme-Kopplung sein, das sollte Generator genannt werden. Ordnung, das ist der Wagen. Lassen Sie mich also zuerst ein CLS machen und den Befehl erneut von Grund auf lesen. Also ASP NET-Codegenerator. Da haben wir's. Also drücken wir die Eingabetaste und lassen es erneut laufen. Ordnung, und dann hätte es innerhalb weniger Sekunden hätte es unser Projekt erstellt und Code für uns generiert. Lassen Sie uns sehen, was es getan hat. Es hat den Build gemacht, dann hieß es, die Generatorsteuerung zu finden und die Generatorsteuerung läuft. Also das ist das. In Ordnung. Und dann sieht es , dass es die Entity Framework-Metadaten für den DB-Kontext und das Modell namens Course herausfindet Entity Framework-Metadaten für den . Dann wurde der Controller zum Controller-Schrägstrich hinzugefügt Dieser Verzeichnis-Slash-Dateiname. In Ordnung, und dann wurden die Ansichten hinzugefügt. Also schau hier, es wurde für Ansichten, Indexierung, Löschen, Details, Bearbeiten und Erstellen hinzugefügt . Und dann wurde uns gesagt, dass die Laufzeit 18 s betrug. Wenn wir nun in unserer Dateistruktur nachschauen , sehen wir tatsächlich einen neuen Controller. Das ist ein bisschen kleiner. In Ordnung, wir sehen also, dass wir einen neuen Controller namens Course haben . Natürlich ist es Controller. Und wir sehen hier, dass es den DB-Kontext injiziert. Und ich werde jetzt nicht zu sehr ins Detail gehen, ich werde zurückkommen und alles erklären, aber ich möchte nur, dass wir einen Blick darauf werfen, was wir haben. Wir haben unsere Indexseite, wir haben Details oder Aktionen oder anderes. Es gibt viele Optionen für Details. Wir haben unsere Create-Aktion , um tatsächlich Aktionen zu erstellen. Also werden wir herausfinden, warum wir müssen, wir haben die Bearbeitung. Wir haben tatsächlich zwei Änderungen. Wieder einmal haben wir gelöscht und wir haben ein weiteres Löschen. In Ordnung? Und wenn wir dann in unseren Views-Ordner schauen, sehen wir, dass wir einen neuen Ordner namens Courses haben. Denken Sie also daran, dass Sie, sobald Sie diesen Controller haben, den entsprechenden Views-Ordner benötigen. Und wenn wir es erweitern, werden wir View-Dateien sehen, die zu jeder Aktion passen , die wir in unserem Controller erhalten haben. Bevor wir also anfangen, den Code zu untersuchen, sollten wir überprüfen, ob er läuft. Also werde ich einen Dotnet-Lauf machen. Wenn die Seite dann geladen wird, navigieren wir einfach manuell. Wir werden das alles später beheben, aber ich kann nur Slash-Kurse sagen. Und denken Sie dann daran, dass es immer zuerst nach der Indexaktion sucht. Wenn ich das mache und die Eingabetaste drücke, wird unsere Angebotsseite geladen. Hier würden wir also alle Kurse im System sehen. Wir können auch mit der Erstellung neuer fortfahren. Wenn ich also auf Neu erstellen klicke, komme ich zu einem Formular. Lassen Sie mich weitermachen und einen neuen Kurs hinzufügen. Sehen wir uns die Open-Source-Entwicklung an. In Ordnung. Der Kurscode lautet zum Beispiel CS101. Und dies ist ein Kurs mit drei Kreditpunkten, mit dem wir ihn erstellen und uns dann ansehen können. Das alles ist also nicht dynamisch. Ich habe nichts von diesem Code 12 geschrieben, du weißt, dass alles, was auf einer HTML-Seite angezeigt wird , entweder statisch geschrieben werden musste oder es wird dynamisch geladen. Das kommt jetzt also direkt aus der Datenbank, oder? Wenn wir zur Bearbeitung gehen, werden wir sehen, dass uns die Entzündung gekauft wird. Wenn ich okay sage, ist das eher ein Kurs mit zwei Krediten und ein Kurs mit drei Krediten. Ich kann sparen. Dort wird es bearbeitet. Ich kann mir die Einzelheiten ansehen. Und das ist im Grunde das, was wir mit einer Menschenmenge meinen, oder? Das ist also, es zu lesen. Wir können nicht näher darauf eingehen, es zu lesen. Wir können bearbeiten und wir können auch löschen. Also, wenn ich sage löschen, löschen, los geht's. Genau dort haben wir die Crowd-Funktionalität mit einem einzigen Befehl in r.net CLI generiert . Wenn wir also zurückkommen, werden wir den Code aufschlüsseln und uns genau ansehen, was wir aus dieser Gerüstbauübung herausgeholt haben. 22. Scaffolded Controller verstehen: Willkommen zurück, Leute. In dieser Lektion werden wir uns mit unserem Kurscontroller befassen, und wir wollen uns nur die Zeit nehmen, um zu verstehen, was der Code tut. Ich habe also mein Terminal zusammengeklappt und werde im Explorer immer wieder zusammenbrechen während wir den Code untersuchen, oder? Sie können also weitermachen und den Courses Controller öffnen. Was Sie dann sehen werden nachdem wir das Ganze mit Block und Namespace und dem Public Class Course Controller durchgegangen sind, es von der Basisklasse des Controllers erbt, was ziemlich normal ist. Wir werden sehen, dass wir diese Injektion der Abhängigkeit von der Datenbank haben . Lassen Sie mich nun erklären, was das bedeutet, wenn ich Injektion sage. Normalerweise, wenn Sie eine Klasse haben und ein Objekt der Klasse wollen, sehen Sie tatsächlich so etwas wie und ich gebe es einfach hier ein. Sie würden sagen, der Name eines Datentype-Objekts entspricht einer neuen Instanz dieses Datentyps. dann wissen, dass Sie das Objekt haben, können Sie es verwenden. Dies kann jedoch je nach Art zu Problemen führen , insbesondere bei einer Datenbankverbindung. Denn jedes Mal, wenn du etwas Neues machst, verbindest du die Klasse und das Objekt tatsächlich eng , oder? Also nein, ich habe My Courses Controller eng an den Datenbankkontext gekoppelt . Wenn ich das ändere, muss es in solchen Kontexten liegen. Zum Beispiel gibt es mir eine Fehlermeldung, weil ich jetzt bestimmte Parameter angeben muss und wie ich dafür verantwortlich sein kann, diese Parameter jedes Mal zu verhindern , wenn ich dieses Objekt verwende, ein Objekt von dieser Typ. Das ist also nicht wirklich nachhaltig und auf lange Sicht aufrechtzuerhalten. Das Konzept der Abhängigkeitsinjektion bedeutet also , dass ich den Kurs haben kann. Ich kann diese Klasse so oft ändern, wie ich brauche, um DB-Kontexte zu meinen. Es kann sich weiterentwickeln, es braucht möglicherweise mehr Parameter oder was auch immer. Aber so sehr es sich weiterentwickelt, ich muss nicht jede einzelne Stelle ändern , auf die ich Bezug nehme. Ich kann es einfach in meinen Code einfügen. Und im Hintergrund macht die Anwendung alles, was sie tun muss. Das nennen wir Dependency Injection. Wir mussten die Abhängigkeitsinjektion oder den DB-Kontext einrichten und ihn für die Abhängigkeitsinjektion vorbereiten , als wir unseren DB-Kontext zuvor erstellt haben . Wenn wir also zu program.cs gehen, denken Sie daran, dass wir diese Zeile hier eingegeben haben und dort steht, Dienste zum Container hinzufügen. Der Container hier, den IOC-Container außer Betrieb nehmen oder die Kontrolle umkehren, oder? Das ganze Konzept der Inversion der Kontrolle und der Abhängigkeitsinjektion, diese beiden gehen also Inversion der Kontrolle und der Abhängigkeitsinjektion, Hand in Hand. Das bedeutet, dass wir die Anwendung so einrichten , dass sie diese sogenannten Abhängigkeiten überall einfügen können . So sehr wir die eigentliche Klasse hier ändern können, wenn sie als Abhängigkeit injiziert wird. Der Empfänger erhält Unterricht, also muss sich die Kurssteuerung in diesem Fall nicht darum kümmern , sie mit all ihren Abhängigkeiten zu versorgen. Weil der IOC-Container sich um all das kümmert. Okay, es ist ein ziemlich cooles Konzept und es führt zu viel saubererem Code viel effizienteren Wartbarkeit auf lange Sicht. Dieser vollständige asp.net Core hat also diesen integrierten IoC-Container. In der Vergangenheit brauchten Sie keine Bibliotheken von Drittanbietern. Und manche Leute greifen immer noch auf Bibliotheken von Drittanbietern zurück, aber das ist heutzutage nicht unbedingt erforderlich, wenn man dotnet Core verwendet. Nachdem wir also unsere Abhängigkeit injiziert haben, was in diesem Fall RDB-Kontexte sind, und es ist eine Abhängigkeit, weil wir den DB-Kontext benötigen, um mit der Datenbank oder dem DB-Kontext zu sprechen der Datenbank oder dem DB-Kontext oder Das Objekt vom Typ db context stellt in diesem Fall die Verbindung zur Datenbank dar. Wenn wir also auf die Kursseite klicken und der Index geladen wird, stellt sie eine Verbindung zur Datenbank her, ruft die Daten ab und zeigt sie an. Das bringt uns zu unserem nächsten Teil , der Aktion. Was passiert jetzt in der Aktion? Zuerst überprüfen wir, ob der Kurs Table, quote unquote ist, tatsächlich in der Datenbank existiert, oder? Sobald dies also tatsächlich in der Datenbank existiert, wir die Ansicht mit den Daten zurück. Das ist in einer Zeile geschrieben. Ich meine, es ist ein ternärer Operator. Wenn es sich also über mehrere Zeilen erstreckt, ist es wirklich eine einzeilige Aussage. Das könnte also zu einiger Verwirrung führen. Das wurde natürlich für uns generiert. Aber das macht so ziemlich viel, ist Sehen. Und ich werde das einfach in einem Kommentarblock lesen und versuchen, es in Pseudocode zu schreiben. Es macht also Sinn. die Datenbanktabelle existiert, oder? Das ist es also, was diese erste Zeile macht. Wenn das existiert, wollen wir die Ansicht zurückgeben. Oder lassen Sie mich Sie tatsächlich sehen , die eine Abfrage ausführen möchten. Wir sagen also, dass var-Datensätze in einer Tabelle der Abfrage entsprechen würden. In diesem Fall ist unsere Abfrage also eine Gewichtung von Kontexten, Punkten, Kursen, und diese Werkzeugliste ist Sink. Wir verwenden also einen Sharp-Dialekt namens Link, oder? Link hier ist, was EF Core verwendet. Da ist die Bibliothek, um zur Datenbank zu gehen und die Datensätze basierend auf der Abfrage abzurufen, die aus unserer Anweisung generieren kann. Hier heißt es im Grunde, ich konvertiere das einfach in eine SQL-Anweisung, die besagt Wählen Sie einen Stern aus dieser Tabelle aus. Wir müssen es jedoch nicht in den Code schreiben, da wir den Dialekt verlinken haben, um ihn für uns zu übersetzen. Also hier sehen wir im Grunde , dass ich dadurch die Datensätze in der Tabelle erhalte. Ich warte auf eine Verbindung zur Datenbank, besorge mir die Tabellen und erhalte alles in Form einer Liste. Nun, einige Keywords, die Sie feststellen werden, sind asynchron. Ich warte ab und gebe Aufgaben. Wenn wir asynchrone Programmierung durchführen, ermöglicht dies effizientere Abfragen und effizientere Abläufe. Und syntaktisch müssen wir nur sicherstellen, dass wir diese Aussagen im Laufe der Zeit mit einbeziehen. Ich erkläre sie, sobald sie auftauchen. Aber ich möchte das jetzt nicht als Hauptfach studieren. In Ordnung. Also holen wir uns die Datensätze aus der Tabelle und wissen dann , dass wir die Datensätze haben. Wir geben die Ansicht zurück , die Sie zuvor mit diesem Namen gesehen haben und in der sie mit den Daten aus der Datenbank in View umgewandelt wurde . Das ist es also, was diese beiden Linien tun, so ziemlich. In Ordnung? Wenn eine Tabelle existiert, ist das dieser Teil. In Ordnung? Und dann schalte ich keinen Operator ein, das Fragezeichen. Und was wir dann tun sollten, dann sagen wir im Grunde, geben Sie die Ansicht mit diesen Daten zurück. Aber alles was ich hier oben gemacht habe, wir teilen das in zwei Zeilen auf, holen die Daten dann wieder zur Ansicht zurück. Es ist also so ziemlich dasselbe, oder? Ich denke, dieses Format liest sich auf lange Sicht vielleicht etwas besser, aber wenn Sie es hier schätzen, dann ist das in Ordnung. Wenn das dann nicht als wahr bewertet wird , wir eine weitere Rückgabeerklärung in der wir dieses Problem zurückgeben. Zu sehen, dass etwas mit der Datenbank nicht stimmt, oder? Das Problem ist nur ein spezielles Objekt, anhand dessen wir sehen können , dass ein Fehler aufgetreten ist. Jedes Mal, wenn ein Fehler auftritt, können wir das Problem zurückgeben und die Anwendung zeigt es entsprechend an. Hier heißt es also , dass die Entität, die im DB-Kontext der Schulverwaltung sitzt , nicht richtig eingestellt wurde. Es ist nicht so, dass es nicht existiert oder, weißt du, etwas stimmt nicht, es geht darum, es nicht zu finden. Das ist es also, was diese eine Zeile ist. Lassen Sie mich das, diesen Kommentar hinterlassen. Vielleicht hilft es Ihnen , diese eine Codezeile besser zu analysieren. Das fasst also zusammen, was passiert, wenn wir unsere Indexseite geladen haben. In Ordnung, wenn wir uns die Ansichten ansehen, werden Sie sehen, wie wir die Daten vom Backend an das Frontend binden . Aber das meinte ich mit der Magie, die der Controller tut, bevor er die Ansicht ausschaltet. Request Gaming ging in die Datenbank, hat unsere Daten bekommen, dann haben wir die Ansicht zurückgegeben, welche die Daten. Wenn wir nun zu den Details gehen, passieren innerhalb der Details noch einige weitere Dinge. Wenn wir versuchen, die Details zu laden, werden Sie feststellen, dass dies versucht wird oder dass ein ID-Wert erwartet wird. So werden die Wurzeln also aussehen. Kurse, Details, Schrägstrich und der ID-Wert. Und dieser ID-Wert geht in eine Parametervariable, die wir id nennen, oder? Als erstes stellen wir sicher, dass diese ID nicht Null ist. Es heißt also, ob die ID Null ist oder die Datenbanktabelle auf dasselbe Problem stößt wie hier oben. Es existiert nicht, dann kehren wir zurück. Kein Spaß, nicht für sie ist das Gleiche wie ein Fluorophor. Wenn Sie also auf Websites gehen und auf bestimmte Dinge klicken, sehen Sie möglicherweise eine Vier oder Vier, weil sie nicht gefunden werden können. Nun, hier ist ein Live-Beispiel dafür. Wenn das dann, wenn keiner von beiden erreicht wird, gehen wir zum Abschnitt zum Abrufen des Kurses , in dem wir die Datenbank sehen. Geben Sie mir die Tabellenkurse und geben Sie mir dann den ersten Datensatz , der mit der von mir angegebenen ID übereinstimmt. Das nennen wir also einen Lambda-Ausdruck. Wir haben das schon einmal gesehen, wir haben das schon einmal gemacht. In Ordnung, aber beim Schreiben von Abfragen sind sie praktisch, wenn wir bestimmte Bedingungen spezifizieren möchten . Also hier sehen wir, gib mir den ersten Stern-Standarddatensatz wo, und dann beginnen wir mit dem Lambda-Ausdruck mit diesem Token und dann diesem Pfeil. Und dann sagen wir Tolkien-Punktspalte, dass wir daran interessiert sind zu vergleichen, ob sie gleich, gleich, kleiner als, größer als, größer als gleich usw. sein gleich, gleich, kleiner als, wird. Was auch immer der Vergleichstyp ist, der Wert, den wir uns wünschen. Okay, nein, das ist unsere Standardeinstellung, weil zuerst bedeutet, dass es den ersten Datensatz erhält , der der Bedingung entspricht. Selbst wenn mehrere angezeigt werden, wird die erste zurückgegeben. Oder Standard bedeutet, dass, wenn Sie nichts gesehen haben, Null zurückgegeben wird. In Ordnung? Deshalb heißt es danach, wenn der Kurs Null war, dann wird wenn der Kurs Null war, Rückgabe nicht gefunden. Weil es sein könnte , dass ich danach gefragt habe, natürlich mit der ID 50. Wenn es keinen Kurs mit der Idee von 50 gibt. Also wenn er es danach nicht finden könnte, wäre das Null. Und wenn bekannt ist, dass wir nichts gefunden sehen. Sobald dies alles bestanden hat, geben wir jedoch die Ansicht mit den Daten, mit dem Objekt, mit dem Modell oder einem Objekt außerhalb des Modelltyps zurück Objekt, mit dem . Das ist es also, was innerhalb der Details passiert. Und so wie es geschrieben ist, ist es etwas einfacher als der Einzeiler hier. Ich muss hier keine Anmerkungen schreiben. Dann gehen wir zu Create und du wirst sehen , dass die Kreationen ungeschickt sind, hier oben. Ordnung, wir haben also Create, get, our F erstellt einen Post und GET-Operation verwenden wir normalerweise , um Entzündungen abzurufen. Also hier kehrt es einfach zur Ansicht zurück , denn wenn wir auf Erstellen klicken, wird nur die Ansicht zurückgegeben , mit der wir erstellen können. Wenn wir jedoch im Formular auf Senden klicken, empfiehlt es sich, Daten mit einer Post-Anfrage einzureichen. Und deshalb haben wir den Beitrag erstellt. Also haben wir das Get Created und wir haben den Beitrag erstellt. Das Postscript erhält hier eine Anmerkung mit der Aufschrift HTTP-Post. Es validiert auch ein Anti-Fälschungs-Token, um sicherzustellen, dass wir nicht oder wir begrenzen die Anzahl der Einsendungen, die eingehen falls unser Körper stark für Spam war oder so. Jedes Mal, wenn Daten eintreffen haben Sie höchstens dieses Token, das nur dem Server bekannt ist. Der Server weiß also, wie er dieses Token validieren kann, das aus dem Formular kommt. Wenn wir es nicht validieren können, wird es diese Versuchungen zurückweisen. In Ordnung? Dann sehen wir in der Parameterliste hier, dass wir eine Bindung durchführen. Die Bindung hier besagt im Grunde, ich an Feldern mit diesen Namen interessiert bin dass ich an Feldern mit diesen Namen interessiert bin, die möglicherweise in diesem Objekt eingereicht wurden. Ordnung, du kannst diese Liste erweitern. In Ordnung? Wenn Chorus eine neue Kolumne bekommen würde und wir darauf eingehen wollten, könnten wir diese Liste entsprechend erweitern. Und wir fügen einfach ein Komma hinzu, den nächsten Feldnamen. Wir könnten auch ein Ansichtsmodell erstellen, aber darauf werden wir an dieser Stelle nicht eingehen. Sie können jedoch lesen und sagen, dass Sie zum Schutz vor Überposting-Angriffen die Eigenschaften angeben können , Schutz vor Überposting-Angriffen die Eigenschaften angeben können , damit Sie in diesem Parameter mehr darüber erfahren können, was passiert. Aber im Grunde sagen wir nur , dass unabhängig von den Daten, die eingereicht werden, wir alle an den Daten mit diesen Namen interessiert sind. Also hat jemand versucht , mehr Daten zu senden als für dieses spezielle Formular benötigt wurden, dann wurden diese zusätzlichen Felder automatisch abgelehnt weil sie diese Wertbedingungen nicht erfüllen. In Ordnung. Dann schauen wir weiter, ob der Modellstatus gültig ist. Der Modellstatuspunkt ist gültig. Ziemlich viel. Die Validierung basiert auf unseren eigenen Validierungsregeln , die wir später erstellen können. Und die Validierungsregeln, die C-Sharp auf der Grundlage der verwendeten Datentypen ableitet. Also hier haben wir eine Zeichenfolge. Die Zeichenfolge kann nicht auf Null gesetzt werden. Es würde also im Grunde heißen, Hey, ich erwarte hier einen Wert, aber in diesem ist dieser Nullwert. Also, wenn ich ein Objekt vom Typ erhalte, und das sich aus irgendeinem Grund als Null herausstellt. Und Sie werden hier sehen, dass es so etwas wie ein altes Huhn oder eine Kontingenz gibt, um sicherzustellen , dass es immer einen Wert hat. Aber lass uns einfach sehen. Er kam mit einem Wert rein, der Null ist, dann würde diese Überprüfung automatisch feststellen, dass er nicht gültig ist , weil ich eine Zeichenfolge erwarte und Null erhalte, sie ist nicht gültig. Was passiert, wenn es nicht gültig ist? Dies wird übersprungen, da dies als falsch bewertet wurde. Und es wird nur die Ansicht mit dem Objekt zurückgegeben , das eingereicht wurde. In Ordnung. Das ist der Grund, warum, wenn Sie ein Formular abschicken und es einen Fehler enthält, ja. Tatsächlich wird das Formular mit den Daten, die Sie gerade eingereicht haben, neu geladen . Das ist also alles, was hier passiert. Wenn es jedoch gültig ist, dann sagen wir Datenbank, wir fügen diesen Datensatz hinzu. Ich weiß, dass Sie die Kette speichern möchten, also das ist es, was sie tatsächlich in die Datenbank überträgt. Und dann leiten wir zur Aktion mit dem Namensindex weiter. Lesen Sie Derek, die Auktion ist der Grund, warum sie zurück zur Angebotsseite springt und Ihnen dann einen neu erstellten Datensatz zeigt , der die Datenbank kennt. Das ist also alles, was passiert. Anstelle der Creates. Wenn wir zum Editor gehen, werde ich sehen, dass es der Detailseite sehr ähnlich ist, sehr ähnlich ist weil sie einen ID-Wert empfängt , überprüft, ob es sich um eine gültige ID handelt Wert. Es geht los, um den Kurs zu finden, obwohl diese Abfrage etwas anders geschrieben ist, aber sie macht dasselbe. Finden Sie den Kurs anhand des Ausweises. Und wenn es dann Null ist, zeigen wir es dafür. Wenn es nicht Null ist, haben wir die Seite angezeigt Die Bearbeitungsseite wird tatsächlich ein Formular haben , das der Seite Erstellen ähnelt, aber dieses Mal werden die Daten tatsächlich abgerufen. Deshalb sehen wir, wenn wir auf Bearbeiten klicken, die Daten tatsächlich derselben Form, wie ein Dekret aussieht, aber wir erhalten die Daten tatsächlich. Wenn wir dann einreichen, stellen Sie fest, dass es auch abgelehnt hat. Es führt die gleiche Validierung des Anti-Fälschungstokens durch. Wir nehmen die ID und validieren sie und überprüfen die eingehenden Felder . Ordnung, also das gleiche Konzept wie der Beitrag, den wir uns gerade für den Create angesehen haben. Dann machen wir noch ein paar Validierungen, bei denen wir sagen, okay, stellen Sie sicher, dass die ID , die hier im Link eingeht , mit der ID übereinstimmt, die aus dem Formular kommt. Andernfalls geben Sie einen Fehler zurück. Dann sagen wir, ob der Modellstatus gültig ist, werden wir versuchen, den Datensatz zu aktualisieren und die Änderungen zu speichern. Jetzt gibt es Fälle , in denen ich den Datensatz möglicherweise verwendet habe , um ihn zu aktualisieren, und Sie haben möglicherweise dasselbe getan. Und dann haben wir versucht, es einzureichen, oder als Sie es einreichen, habe ich es bereits eingereicht. Sie bearbeiten also eine ältere Version. Das wird also zu einer sogenannten DB-Parallelitätsausnahme führen . In Ordnung? Und wenn das passiert, dann heißt es, ob der Kurs existiert oder ob er natürlich nicht existiert, dann gib kein Telefon zurück. Andernfalls werfen Sie einfach die Ausnahme aus, weil wir nicht ganz sicher sind, wie wir damit umgehen sollen, richtig. Aber das wäre selten, aber es passiert. Es ist also gut, diese Kontingenz zu haben. Nach all dem lesen wir Erich auf die Indexseite, genau wie beim Erstellen. Am Ende geben wir auch die Ansicht mit den Daten zurück , falls sie nicht gültig war. Ordnung, Sie werden also anfangen zu sehen, dass der Code sehr ähnlich aussieht , weil dies Code auf diese Weise ist. Dies wird als Neuzuweisung der Details bezeichnet und alles, was hier passiert , ähnelt dem, was bei einem Erstellen passiert. In Ordnung, dann fahren wir mit dem Löschen fort. Also geben wir eine ID für das Löschen ein. Er wird dasselbe tun, was die Details und die Bearbeitung gerade gemacht haben wo überprüft wird , ob die ID den Kurs findet und überprüft, ob er Null ist, wenn es nicht alles ist, werden wir eine Seite, die uns die Details des Kurses zeigt. Dann gab es einen Löschknopf. Wenn Sie sich an unseren Test erinnern, wissen Sie einfach, dass ein Beitrag eingereicht wird, wenn wir darauf klicken . Das wissen wir schon, oder? Und dieses Mal heißt es nur , dass es einen anderen Aktionsnamen verwendet, oder? Die Methode ist also anders, aber wenn wir möchten, dass sie zu einem bestimmten Namen navigiert, können wir diese Anmerkung spezifizieren und sagen, dass Sie sich als gelöscht identifizieren, obwohl Sie als gelöscht bestätigt bezeichnet werden. In Ordnung, wir validieren immer noch das Anti-Fälschungstoken. Dann, dieses Mal, wo wir überprüfen, ob die Datenbank existiert, ist das in Ordnung. Wir gehen und holen uns den Kurs per Ausweis. Und wenn wir den Kurs dann finden konnten, haben wir versucht, ihn aus der Datenbank zu entfernen. Sobald es entfernt ist, speichern wir die Änderungen. Und dann lesen wir noch einmal Erich, um zu indexieren. Deshalb wird jedes Mal, wenn wir einen Vorgang abgeschlossen haben, immer wieder zur Angebotsseite zurückgeleitet , weil jeder Vorgang, einer erfolgreich, wir sagen, dass er zur Indexseite weiterleitet. Die letzte Methode in diesem Controller überprüft nur ob der Kurs existiert. Und das wurde wirklich nur im Bearbeitungsbereich verwendet , oder? Wo wir sehen, ob es nicht existiert , dann nicht gefunden. Dies ist also nur eine weitere Möglichkeit, festzustellen, ob es dort existiert, wo in der Datenbank wir die Methode any haben. Also Kontexte Punkttabelle, Punkt beliebig. Und dann können wir sagen , welchen Zustand wir überprüfen? Gibt es also einen Datensatz , der diese Bedingung erfüllt , und in diesem Fall sieht er, wo die ID mit dem ID-Wert übereinstimmt , den wir übergeben. Und dann erhalten wir entweder den Wert, der bis zu unserem Standard wahr wäre , der Null wäre. Das ist so ziemlich das, was in unserem Controller passiert. Das war eine schnelle und dreckige Tour. Wir werden es nicht ändern. Wir werden den Boilerplate-Code hinterlassen. Und später werden wir anfangen, unsere eigene benutzerdefinierte Logik zu schreiben. Aber im Moment ist es gut, den Boilerplate-Code zu verstehen und zu wissen, was er tut. Wenn wir zurückkommen, werden wir uns die passenden Ansichten für jede dieser Aktionen ansehen die passenden Ansichten für jede dieser Aktionen ansehen und wie die Bindung zustande kommt. 23. Gestellte Ansichten verstehen: Ordnung Leute, also lasst uns weitermachen In Ordnung Leute, also lasst uns weitermachen und anfangen, uns unsere Ansichten anzusehen. Also werde ich alle Wannen schließen , die für diese Aktivität nicht unbedingt erforderlich sind . Lassen Sie uns dann im Ordner Views suchen und dann nach dem Ordner des Kurses suchen. Und dann fangen wir mit dem Index an. Also mache ich es in der Reihenfolge, in der wir die Seiten wahrscheinlich tatsächlich besuchen würden . Und natürlich ist die Indexansicht die erste, die angezeigt wird , weil die Indexaktion die erste Aktion ist , die aufgerufen wird. Und wenn Sie sich erinnern, wird die Indexaktion tatsächlich die Datenbank abfragen und diese Daten dann an die Ansicht zurückgeben. Wenn es also diese Daten an unseren View-Index zurückgibt, erfolgt hier die gesamte Bindung. Gehen wir also von Zeile eins aus. Zeile eins gibt das Modell vor. In Ordnung? Bei Sinusmodell ist das also nur ein Schlüsselwort, das Sie oben bei Ansichten sehen , die Datenbindung sind, oder? Und dann wird der Datentyp angegeben. Hier heißt es also, dass der Datentyp, dass diese Ansicht gebondet ist, unzählig ist, was ein Sammlungstyp ist, was Sinn macht, da wir eine Liste von Objekten übergeben . Das ist also unsere Sammlung, oder? Natürlich Objekte. Das ist es also, was es erwartet. Jetzt, da es weiß, dass es an dieses Modell binden sollte, können wir jetzt auf die verschiedenen Teile zugreifen. Wir haben den Abschnitt „Reguläre Datenansicht“. haben wir schon einmal gesehen. Wir haben hier ein H1-Tag mit der Aufschrift Index. Wir haben ein P-Tag, das ein Ankertag enthält, mit dem wir zur Create-Aktion navigieren können , oder? Beachten Sie hier also, dass es sich nur um Aktion handelt. Früher, als wir uns die kleine Seite angesehen haben, die Sie in ASP sehen werden , ist Controller gleich und Sie hätten Action und Controller in Peers gesehen. Wenn wir den Controller jedoch nicht angeben, wird automatisch davon ausgegangen dass er nach der Auktion in demselben Controller sucht in demselben Controller , von dem die aktuelle Ansicht stammt. Der aktuelle View-Index stammt also vom Controller des Kurses. Es wird also davon ausgegangen, dass es zur Create-Aktion im selben Controller gehen sollte . Ordnung, dann schauen wir uns einen Tisch an. Denken Sie also daran, dass wir die Liste der Aufzeichnungen gesehen haben. Und dann haben wir in dieser Tabelle einige Hilfsmethoden. Und dieser heißt Anzeigename für. Ordnung, das ist also eine HTML-Erweiterungsmethode , die sich im Grunde den Namen der Eigenschaft in der Modellklasse ansieht , oder? Sie stellen also fest, dass es einen Lambda-Ausdruck verwendet. Und es schien, als würde man dieses Knie modellieren, Modellpunkt-Code, Modellpunkt-Credits. Und sie weiß aufgrund des spezifizierten Modells davon . Wenn ich also diesen Modelltyp ändere nur um ein bisschen provokativ zu sein, wenn ich ihn auf Student umstelle, dann stelle ich fest, dass dieser Typ aufleuchtet, weil keine dieser Eigenschaften zu diesem Modelldatentyp gehört. Es ist also sehr, sehr sensibel, sehr stark typisiert und reagiert sehr empfindlich auf den Datentyp, den sie hier verwenden , im Vergleich zu den Eigenschaften , auf die Sie zugreifen. Ich kehre zurück. Du wirst sehen, dass die Lichter ausgehen. Was wir hier tun, ist, dass wir für die Tabelle spezifizieren. Der Header. Die erste Zeile sollte Tabellenkopfspalten enthalten, die einen Namen und Credits angeben. Dann haben wir ein leeres th und wir werden sehen , warum das leer ist. Dann gehen wir runter zur Leiche. Das ist also der Kopf. Nirgends am Korpus des Tisches. Für den Körper verwenden wir eine Foreach-Loop. Und denken Sie daran, dass wir jedes Mal, wenn wir C-Sharp im HTML haben wollen, nur ein At-Zeichen benötigen und dann unseren C-Sharp-Code schreiben können . Also hier sehen wir für jeden Artikel im Modell. Das Modell hier ist also das eigentliche Objekt, das den hier angegebenen Datentyp annimmt. Beachten Sie den Unterschied, dieser ist ein Sinusmodell. Bei diesem Modell handelt es sich um ein Capital M-Modell. In Ordnung? Also hier sage ich, besorgen Sie mir jedes Objekt in diesem Modell oder in diesem Objekt, das vom Typ Sammlung ist , natürlich Objekte. Jetzt kennen wir diesen Loop. Also der beste Weg , Sammlungen durchzugehen, oder? Gehen Sie also die Sammlung durch und erstellen Sie für jede, die Sie finden , eine neue TR- oder Tabellenzeile und erstellen Sie eine Spalte , die den Namen anzeigt, eine Spalte, die den Code anzeigt, oder eine Spalte, die zeigt die Credits an. In Wirklichkeit könnte ich eigentlich einfach bei Sign Item Punkt Credits sagen , oder? Ich muss also wirklich nicht einmal sagen, dass die Anzeige, wofür diese Hilfsmethoden tatsächlich uns diese Hilfsmethoden tatsächlich helfen, die Art und Weise ist, wie sie angezeigt wird, denn manchmal möchte man eine spezielle Anzeige für beispielsweise eine Checkbox. Wenn es ein boolescher Wert ist, wird ein Kontrollkästchen generiert. Wenn wir es manuell eingeben, würde es tatsächlich das Wort wahr ausdrucken, oder? Deshalb würden wir das manchmal benutzen wollen. Als wir tatsächlich ein Steuerelement dynamisch anzeigen wollten , das dem Datentyp der Eigenschaft entspricht. Also zeige ich dir nur die Optionen, oder? Für diese Zeichenketten - und numerischen Werte benötigen wir also wahrscheinlich keine besonderen Überlegungen. Wir könnten eigentlich einfach, ich würde sagen Artikelpunktmodell manuell sagen. Aber für Boolean und einige andere sollten Sie ihnen wahrscheinlich erlauben, sollten Sie ihnen wahrscheinlich erlauben das für Sie zu generieren. Dann haben wir den td , der zum MTT H passt, und dieser hat die Aktionen. Wir haben also eine Optionsschaltfläche zum Bearbeiten einer Aktionsschaltfläche für Details einer Aktionsschaltfläche zum Löschen. Ich stelle fest, dass alle von ihnen an die entsprechenden Aktionen schreiben werden . Okay, aber sie geben auch weiter, das ist der P Dash Root-Dash ID-Wert, was die Item-Punkt-ID ist. Was ist also die Relevanz davon? Denken Sie daran, dass wir uns im Controller für die Bearbeitungsmethode ansehen. Wenn wir uns die Bearbeitungsmethode ansehen, das EDI get, erwartet es diese ID. Das bedeutet also, dass jeder Link, der diese Bearbeitungsmethode aufrufen wird , diese ID übergeben muss. Deshalb müssen wir SP Dutch Root Dash ID sagen. Denn wieder einmal, es ist ein Ausweis. Wenn sie Welpe sagen würden, dann müssten wir ASP Dash, Dash Puppy sehen. So funktioniert es einfach. Die Bindung erfolgt also automatisch. Und dann ist der Wert, den wir übergeben, der ID-Wert des Elements, das in dieser bestimmten Rolle verarbeitet wird . In Ordnung? Das Gleiche gilt für Details und Löschen. Und das war's für die Indexseite. Schauen wir uns nun die Seite Erstellen an, weil sie leer ist. Also wollen wir einen Datensatz erstellen. Das ist wahrscheinlich das Erste , was wir tun wollen. Jetzt haben wir hier ein Formular. Und es ist ein sehr ähnliches Konzept, bei dem nein, es wird ein Modell erstellt, aber beachten Sie, dass wir unser Modell von oben spezifizieren. Aber im Controller haben wir ihm eigentlich keine Daten gegeben, oder? Alles, was wir getan haben, war eine Ansicht ohne Daten zurückgegeben. Warum spezifizieren wir auf dieser Seite ein Modell? Nun, weil es ein Forum ist, in dem ich hier oben spezifiziere, welche Art von Objekten wir zum Ausfüllen bilden wollen Objekten wir zum Ausfüllen bilden wollen, ein Modell spezifiziere, können wir damit den Ton angeben oder den Kontext für den Rest des Formulars festlegen . Also beginnen wir damit, die verständlichen Standardteile zu überspringen verständlichen Standardteile und direkt auf den Forum-Tab zu gehen. Das Formular hier gibt ASB action equal creates, equals grades zurück. Das heißt, sobald das Formular eingereicht ist, wird es versuchen, zum Erstellen zu gehen, und standardmäßig wird ein Beitrag eingereicht, oder? Natürlich würden Sie normalerweise so etwas wie Methode gleich Beitrag sehen . In Ordnung? Aber dann ist das impliziert. müssen wir also nicht sagen. Und es weiß, dass es, wenn es eingereicht wird, an die Create geht. Und wir haben schon gesehen, dass wir das get erstellen müssen, und dann haben wir den Beitrag. In Ordnung? Nachdem es das getan hat, nachdem wir eher ein Formular deklariert haben, gibt es hier einen Abschnitt, in dem es heißt, sollten wir die Zusammenfassung anzeigen, die sollten wir die Zusammenfassung anzeigen, die Validierungszusammenfassung, die als nützlich erweist, wenn sie falsch ist, Wenn die Validierung fehlschlägt und wir die Ansicht mit den Daten zurückgeben, druckt dieser Abschnitt tatsächlich aus welche Felder fehlten, welche Daten, oder? Es ist also praktisch. Schauen wir uns einen Teil der Steuerung an. Das ist also ein Standard-Bootstrap-Formular. Wenn Sie mehr über Bootstrap-Formulare erfahren möchten, können Sie jederzeit in der Dokumentation nachschauen wie empfohlen wird, Ihre Formulare zu gestalten. Also die wichtigsten Teile hier, wir haben das Etikett und stellen fest , dass dies ASP für Name ist. Wie ist sein Name? Der Name stammt vom Modell. Das ist also ASP oder die Bezeichnung für die Namenseigenschaft aus dem angegebenen Modell, was Kursähnlichkeit für die Eingaben ist , wir haben den ASP für Nim, was bedeutet, dass wenn Sie welchen Wert auch immer eingeben wird es automatisch an die Namenseigenschaft für das Objekt gebunden. Wenn wir es einreichen, wird diese Namenseigenschaft natürlich hier drüben angezeigt und wir können über unsere Objekte darauf zugreifen. Das ist also alles, was fließt, oder? Ich bin so ziemlich der Fall, dass das bei allen anderen Immobilien der Fall ist. Wir haben den Eingabe-Bone zum Codieren, wir haben den Eingabe-Bone, zwei Credits. In Ordnung. Jetzt wird auch die beste Art von Steuerung generiert, HTML-Steuerelement für den Datentyp. Beachten Sie also, dass wir den Eingabetyp oder ähnliches nicht angeben . Wir sehen nur Input und ESP für das Feld. In Ordnung, also wenn wir einen booleschen Wert haben, wird automatisch ein Kontrollkästchen generiert. So mächtig sind diese HTML-Helfer, sind diese HTML-Helfer wenn wir es mit Ariza-Seiten zu tun haben. In Ordnung? Dann haben wir unseren Absenden-Button. Sobald Sie darauf klicken, wird erneut eine Einreichung an oder ASP wird tatsächlich erstellt. Und wir wissen, was danach passiert. Sobald es das getan hat, wenn es gültig ist und so, dann laden wir die Indexseite neu. Jetzt, auf der nächsten Seite mit mir, habe ich auf Details geklickt. Schauen wir uns also die Detailseite an. Denken Sie also daran, dass das im Controller ist. Für Details ist ein Ausweis erforderlich. In Ordnung. Es wird den Datensatz abrufen und dann die Ansicht mit diesen Daten zurückgeben. Oder die Detailseite muss wissen, welcher Datentyp erwartet wird. Dann wird für jede der Eigenschaften dieselbe Art von Anzeige, Name und Anzeige ausgeführt. Aus diesem Grund sehen Sie auf der Detailseite den Wortnamen und dann den Wert, der dieser Name hatte, das Wort Cord, und dann den Wert, der in den Kern eingegeben wurde, das Wort Credits und den Wert das wurde in Credits umgewandelt. Das sind also alle Details, die es gibt. Am Ende können wir wählen, zur Bearbeitungsseite zu gehen , auf der erneut der Routen-ID-Wert angegeben und die Modellpunkt-ID übergeben wird . Oder wir können zum Index zurückkehren und die externen Dosen zurück zur Liste. Wenn wir nun Bearbeiten wählen, worauf treffen wir dann? haben auf ein Formular gestoßen , das tatsächlich mit unserem Create-Formular identisch ist, oder? Es ist wirklich dieselbe Form, es gibt nur ein paar Unterschiede. Das Modell wird also dasselbe sein. Noch einmal, Controller. Als wir versucht haben, es zu bearbeiten , lass mich das schnell herausfinden. Als wir versucht haben, zu bearbeiten, wird der Datensatz abgerufen und dann die Ansicht mit diesem Datensatz zurückgegeben. Deshalb haben wir Daten im Formular, wenn die Bearbeitungsseite geladen wird. Sie werden auch feststellen , dass wir hier oben im Formular eine Eingabe für die ID haben , die versteckt ist. Warum ist das so? Nun, wir müssen die ID wissen, wenn das Formular eingereicht wird, da der Beitrag Schecks enthält, die sicherstellen, dass die eingereichte ID sicherstellen, dass die eingereichte ID oder die eingehende ID, der Parameter hier mit dem übereinstimmt ob das auf dem Formular eingereicht wurde, oder? Also hier ist die Bindung für die ID und natürlich diese ID. In Ordnung, also entspricht sie dem. In der Regel benötigen Sie die ID, wenn Sie ein Update durchführen können. Denn wenn das Entity Framework tatsächlich alle Updates durchführt, muss dieses Objekt einen ID-Wert haben, damit es weiß, dass es ein Update und kein Einfügen durchführen soll . Okay, für eine Beilage benötigen wir die ID wirklich nicht, also ist es sicher, diese Bindung tatsächlich zu entfernen , da wir nicht zulassen sollten dass jemand eine ID schicken kann , wenn er einen Datensatz erstellen. Also könnte ich das tatsächlich löschen. Ordnung, aber für die Änderungen ist es absolut notwendig, da die Datenbank diese ID kennen muss , damit sie das Update einhalten kann , wenn wir die Änderung erhalten. Okay, nun, innerlich ist alles andere so ziemlich dasselbe wie das, ist alles andere so ziemlich dasselbe wie das was wir mit dem Create gesehen haben. Die Aktion ist also natürlich anders , weil sie in den Beitrag bearbeiten geht. Und aufgrund der Bindung und der Tatsache, dass Daten gesendet wurden, enthalten die Eingabe-Tags automatisch die Daten, die Objekt entsprechen, das während des Get-Vorgangs gesendet wurde . In Ordnung? Aber abgesehen davon ist es so ziemlich die gleiche Form , die wir für den Create gesehen haben. Dann fahren wir mit dem Löschen fort. Nun, das Löschen von Seiten, ziemlich einfach. Wir wissen schon, welche. Es wird einfach versuchen, den Datensatz zu finden , genau wie das, was mit den Bearbeitungen und den Details passiert ist. Und dann wird die Ansicht mit dem Datensatz zurückgegeben. Nein. Nun, wir sind gerade dabei, Seiten zu löschen und fragen: Bist du sicher? Und dann werden wirklich nur die Details des Datensatzes angezeigt , den wir löschen können. Es ist also wirklich fast identisch mit der ausführlichen Rede. Allerdings gibt es hier ein kleines Formular, das es uns ermöglicht, die ID des Datensatzes , der gelöscht werden soll, zu binden. Und dann können wir auf Löschen klicken, um das Formular abzusenden, oder wir können uns anschnallen und zur Liste zurückkehren. Wenn wir uns also dafür entscheiden, zu senden, was passiert, geht dieses Heidi-Tal mit der Daten-Payload auf unsere Methode zum Löschen von Beiträgen über . Wenn wir also zur Methode zum Löschen von Beiträgen übergehen, erhält sie diese ID. Und dann führt es diesen Löschvorgang wie erwartet aus diesen Löschvorgang wie erwartet und kehrt dann zum Index zurück. Und das ist so ziemlich alles, was unsere Ansichten tun. Und wir haben gesehen, wir haben einen kompletten Crud-Test gemacht. Wir sehen, dass alles verkabelt ist, alles funktioniert, alle Navigationen zwischen den Seiten funktionieren und das ist alles sehr wichtig. Wir benötigen jedoch das Navigationstool, zumindest die Indexseite. Jemand ist ein Jumbo mit dem Layout und das haben wir schon einmal gemacht. Also werde ich das einfach nochmal machen. Wir hatten die About-Seite eingeführt. Ich kopiere einfach die ganze Paste. Und dann wird die ASP-Kontrolle diesmal Pferde sein. Die ASB-Aktion ist Index. Und dann wären die Texte, die wir hier sehen werden, Kurse. Okay, jetzt haben wir ein neues Element, das, wenn man darauf klickt, zur Indexaktion unserer Kursseite wechselt. In Ordnung, Sie können diese Änderung vornehmen. Mach weiter und drücke Dotnet Run und nur die Gedanken und lass mich sehen. Für ein Aldol haben wir bestätigt, dass alles funktioniert und wir sehen, wie alles verkabelt ist. Wenn wir also zurückkommen, werden wir weitermachen und die Gerüstbauaktivitäten für unsere anderen Modelle in unserer Datenbank wiederholen die Gerüstbauaktivitäten für . 24. Scaffolding und -Controller – Teil 2: In Ordnung Leute, wir wissen, dass wir sehen wie einfach es ist, Crud-Funktionalität zur Unterstützung unserer Datenbanktabellen zu generieren . Lass uns weitermachen und es für die anderen tun, oder? Also haben wir den Kurs schon gemacht. Lassen Sie uns dasselbe tun. Ich mache einfach Control Shift und Apostroph, um das Terminal zu starten. Ich werde bestimmte Dinge auf dem Bildschirm loswerden, damit ich mehr Platz habe. Und dann wiederholen wir den Befehl, den wir zuvor ausgeführt haben, nämlich den dotnet ASP NET Hyphen Code Generator Controller. Wir können hier einfach Änderungen vornehmen , weil wir die gleichen Einstellungen wollen. Der einzige Unterschied wäre jetzt , dass wir es nicht mit Kursen zu tun haben. Wir haben es mit, sagen wir, Dozenten zu tun. Und dann wäre das Modell hier Dozent. Und wir haben das CMD, es sind alle Kontexte derselbe relative, fallen auseinander. Alles andere ist so ziemlich dasselbe. Also, wenn ich das mache, die Eingabetaste drücken und dann ein paar Sekunden warten, dann werden wir sehen, dass es erfolgreich gelaufen ist, oder? Jetzt haben wir uns an den Controllern und Views um unseren Vortragstisch gekümmert. Und das mache ich einfach noch einmal. Und dann kannst du es für unsere Schüler tun. Die Schüler kontrollieren also und die Schüler sind das Modell. Drücken Sie die Eingabetaste. Und los geht's. Jetzt können wir also zurückgehen und sehen , dass wir zusätzliche Controller und Views haben. Also natürlich auch Vorlesungen von Studierenden. Und in unserem Ordner für die Ansichten haben wir Kurse, wir haben ganze Webvorlesungen, wir haben geteilt und wir lassen Studenten schreiben. Der Code ist so ziemlich derselbe. Der einzige große Unterschied , den Sie hier erwarten können, wäre also , dass Sie statt eines Tabellennamens einen anderen Tabellennamen sehen, oder? Sie werden dieselbe Injektion des DB-Kontextes sehen, dieselbe Art von Boilerplate-Code, außer dass es nach Vorlesungen statt nach Studierenden sucht, nach Lehrveranstaltungen statt nach Dozenten usw. Also alles hängt vom tatsächlichen Controller und dem verwendeten Modell ab. Nun, wenn ich die Navigation zu jedem von ihnen haben möchte folge diesem Beispiel und stelle sicher, dass ich das eingebe, , folge diesem Beispiel und stelle sicher, dass ich das eingebe, damit ich die Navigation des Kurses habe. Ich dupliziere das einfach zweimal. Und ich füge eine Navigation für die Dozenten ein. Dieser sollte also zur Indexaktion des Dozenten-Controllers gehen . Und dann machen wir das hier unten für die Schüler. Und das war's. Lassen Sie uns Dotnet ausführen und unsere Anwendung testen. In Ordnung, wenn unsere Anwendung gestartet wird, werden wir sehen, dass wir alle Navigationseigenschaften haben. Wenn ich also auf Kurse klicke, haben wir die Kurse bereits validiert. Wir können einen neuen Kurs erstellen, einen Namen angeben. Also Einführung in die Webentwicklung. Wir können ihm den Code CS101 geben, und das ist ein Kurs mit drei Kreditpunkten. Und dann erstellen wir, und dann haben wir unseren ersten Kurs im System, oder zumindest zu diesem Zeitpunkt, den zweiten Kurs im System, oder? Wenn Sie auf diese Navigationsschaltflächen klicken, können Sie sich auch die URL notieren, die generiert wird , oder Kurse hinzufügen, Schrägstrich zwei, das ist unsere ID. Und dann wissen wir, was hinter den Kulissen passiert. warum wir die Daten auf jeder dieser Seiten sehen. Wenn ich versuchen würde, zu den Details für einen Datensatz 20 zu gehen, dann bekommen wir das für hundert aus Versehen. In Ordnung? Das ist also der Standard, das Standardverhalten von Anfang an. In Ordnung? Wir haben also bestätigt, dass der Kurs bereits überfüllt ist. Lassen Sie uns die Vorlesungsmenge validieren, damit ich die erste Vorlesung im System erstellen kann. Und sein Name ist Troy for Williams. Beachten Sie nun, dass unsere Labels hier buchstäblich wie die Labels in der Klasse aussehen , genau dort der Name der Klasseneigenschaften. Also werden wir das später ein bisschen verschönern wollen . Sie möchten nicht unbedingt das Kamelgehäuse oder Pascal-Gehäuse hier auf Display-Ebene haben. Aber nein, das ist eine Bestätigung dafür, dass es funktioniert. Also haben wir nicht gearbeitet. Und natürlich bin ich mir sicher, dass Sie es testen können. Ordentlich und detailliert. Aber lassen Sie uns zu den Schülern übergehen. Und die Schüler und das System wären, sagen wir, Tyrone Cooper. Und dann notieren Sie Geburtsdatum, wo ein Datumswähler automatisch weiß, dass ich gesehen habe, dass das Eingabe-Tag anhand des Datentyps die beste Art der Steuerung ableitet. Wenn ich also zur Seite „Für den Schüler erstellen“ springe, siehst du, dass sie ihm nicht sagt , dass es sich um einen Datumstyp handeln soll. Es werden nur Eingaben für dieses Feld angezeigt. Nein. ASP.Net Core weiß beim Rendern der Seite, dass es sich um ein Datumsfeld handelt. Es generiert also automatisch das Eingabe-Tag mit dem Datumstyp datetime local. Das ist es also, was hinter den Kulissen passiert. In Ordnung? Wenn ich nun keinen Wert angebe, der benötigt wird, stellen Sie fest, dass mir die Validierung fast sofort auffällt. Wenn ich versuchen würde, auf Erstellen zu klicken, kann ich nirgendwohin gehen bis ich einen Wert angegeben habe, oder? Also kann ich einfach noch einmal Cooper sagen. Und als ich dann das Geburtsdatum erstellt habe, war das optional. So kann ich Schüler ohne diesen besonderen Wert hervorbringen. Wenn ich es erneut versuche und dann auf Erstellen klicke, leuchtet Validierung auf und mir wird mitgeteilt , dass diese Felder erforderlich sind. Das ist also quasi die gesamte Validierung eingebaut. Wir können dies erweitern, aber im Moment denke ich, dass dies gut genug ist um die Integrität unserer Daten zu schützen. Und es reicht für uns, mit der Demoversion dieser Software zu beginnen. Wir können jetzt zu der Schule gehen, für die wir die Software entwickelt haben , und sagen: Hey, weißt du, das ist ein Machbarkeitsnachweis. Lass mich wissen, ob das deinen Bedürfnissen entspricht. Wenn wir also zurückkommen, werden wir unsere Anwendung noch etwas erweitern. 25. Zu GitHub hinzufügen: In Ordnung. Bevor wir also weitermachen, werden wir einchecken oder uns verpflichten. Es ist also immer eine gute Praxis, dass Sie sich verpflichten, wenn Sie einen Meilenstein erreichen. Also springe ich einfach zum Abschnitt zur Verwaltung der Quellcodeverwaltung und sage Datenbank- und Gerüstansichten und Controller hinzugefügt. Das ist die Chicken-Botschaft. Also dann können wir weitermachen und hier siehst du, dass ich zu viele Informationen habe und Datenbanken, Views und Controller hinzugefügt habe. Die Datenbank befindet sich also auf Controllern. Da haben wir's. Und dann können wir uns verpflichten und pushen. In Ordnung, jetzt können wir mit dem Verschönern oder Auftragen fortfahren . 26. Ansichten und Elemente anpassen – Übersicht: In dieser Lektion werden wir uns darauf konzentrieren, unsere Anwendung ein wenig zu verschönern. Und wenn ich verschönern sage, wenn wir zu einigen unserer gerüsteten Seiten springen, werden wir sehen, dass, ja, es wird wenig Bootstrap verwendet, aber es kann Verbesserungspotenzial geben oder die Schaltfläche Erstellen oder Schaltfläche „Bearbeiten“. Diese Knöpfe, die Axontasten, sie sind einfach Standard. Was wir also tun möchten, ist wahrscheinlich reingehen und sie ein bisschen verschönern und einige Formatierungen hier korrigieren, Abstand zwischen diesen Abschnitten schaffen. Und selbst für die Tabelle hier ist dies eine Standard-Bootstrap-Tabelle, aber wir können sie wahrscheinlich verschönern. In diesem gesamten Abschnitt werden wir uns also darauf konzentrieren, werden wir uns also darauf konzentrieren einige Designelemente hinzuzufügen. In der nächsten Lektion fügen wir den Seiten also etwas Bootstrap-Styling hinzu und formatieren sie einfach ein wenig , damit wir den Anschein eines kohärenteren Benutzers haben Anschein eines . Schnittstelle. 27. Boostrap Styling hinzufügen: Okay, lassen Sie uns mit einigen unserer Schaltflächen auf der Kursseite beginnen unserer Schaltflächen auf der Kursseite Ich werde das Aussehen dieser Links ändern. Das Coole an Bootstrap ist, dass ich ein reguläres Link-Ankertag ganz einfach in einen Button verwandeln kann . Wenn ich rüberspringe, lass mich einfach alles schließen , was nötig ist und ich werde mich mit den Kursen befassen. Erschaffe Schnee. Fangen wir mit dem Index an. Es tut mir leid. In Ordnung, es ist auf der Indexseite. Was haben wir? Wir haben das H1-Tag mit der Aufschrift Index. Index, okay? Natürlich ändere ich das Wort Index der Kurse, weil der Wortindex für jemanden viel weniger bedeutet, als ihn wissen zu lassen, dass er sich die Seite mit den Kursen ansieht. Das sind also kleine Dinge. Aber ich sagte Verschönerung. Für das Anker-Tag , mit dem wir zum Create navigieren können, kann ich dann , mit dem wir zum Create navigieren können, einige Bootstrap-Klassen hinzufügen. Wenn Sie wissen möchten, dass die Klasse wieder da ist, können Sie jederzeit die Bootstrap-Dokumentation aufrufen und sie können sich die Schaltflächen ansehen. Aber ich kenne einige von ihnen auswendig , weil sie so konsistent und so einfach zu bedienen sind. Also zuerst, dass ich btn sehen kann. Übrigens, wir werden das so transformieren , dass der Link weg aussieht, oder? Dann kann ich angeben, welche Art von Bt und ich wünsche mir das Haus. Also für unsere Kreationen hätte ich vielleicht so etwas wie grüne Knöpfe, damit ich sagen kann BTN, Dash Success. Und wenn Sie sich an die Farbpalette erinnern, gibt uns der Erfolg einen grünen Knopf. In Ordnung? Und dann kann ich das sogar ein bisschen anpassen. Platziere dort ein Pluszeichen, unternimmt was auch immer es ist. Das liegt an Ihnen für den Textteil, aber ich zeige Ihnen nur, wie einfach es ist, einen unregelmäßig aussehenden Link in ein nettes visuelles Element zu verwandeln unregelmäßig aussehenden Link in , das wie eine Schaltfläche aussieht. Und es funktioniert immer noch, denn wenn ich darauf klicke, gehen wir immer noch zu dieser Seite. Also lassen Sie uns dasselbe für die Details tun und löschen. Das Coole daran ist, dass wir es einmal machen können , weil sie immer wieder auf der Grundlage dessen wiederholen. Ich muss das also nicht für jede Platte machen , ich schleife nur einmal. Also hier ist plus gleich btn. Das ist Edit verkauft , gebe dem wahrscheinlich einen Strand auf Niederländisch Warnung. Ich schreibe sie einfach ein , damit du sie dir danach nur einmal ansehen kannst. Also BTN Dash Warning, diese, ich gebe ihr eine BTN Primary. Lass mich ein bisschen herauszoomen. Und dann zum Löschen gebe ich diesem einen BT und Gefahr. In Ordnung, was bedeuten diese nun? Jede davon steht für eine Farbe in der Palette von Bootstrap. Sie können also nicht noch einmal gehen und sich die Farben ansehen, aber es wird immer sein, tut mir leid, eine Warnung wird immer eine Art REM-Schrägstrich Amber Primaries sein , aber um uns diesen Blauton zu geben und delete wird uns das Rot geben. In Ordnung? Und dann kann ich all die Pfeifen zwischen diesen Bars nehmen . Diese Riegel, die kann ich rausnehmen. Und ja, das sieht viel besser aus. Okay, also nein, jeder Kurs, der erstellt wird. Also, wenn ich hier reingehe und sage, gib mir einen neuen Kurs, lass uns zurück zur Open-Source-Entwicklung gehen. Der Code ist CS1 oder zwei, und Credits sind zwei Credits. Und dann klicke ich auf Erstellen, dann siehst du, dass sie diese Konsistenz haben. Bei all dem Aussehen der Tasten wird diese Benutzeroberfläche umso bunter und ansprechender, je mehr Tasten hineinkommen diese Benutzeroberfläche umso bunter und ansprechender, je mehr , richtig. Das ist es also für die Indexseite, zumindest für den Moment, oder? Sie können Ihre eigenen Anpassungen vornehmen, da Sie Meinung sind, dass Sie möglicherweise sogar andere Farben verwenden , als ich es hier verwende. Das liegt ganz bei Ihnen und behalten Sie Ihre Vision für Ihre Anwendungschromosomen bei. Lass uns rüber zum Create Beach gehen. Von create ist er kreativ und natürlich, und dann haben wir die Textfelder, oder? Lassen Sie uns also rüberspringen, um zu erstellen. Und was ich zuerst tun werde, ist diese Tools zusammenzuführen. Also erstelle einen Kurs und werde dieses Alter für Todd los , Leave the HR. Und dann werde ich für die Eingänge einen kleinen BR zwischen diese roten legen. Ich will sie nicht so nah beieinander haben. Also im Formular setze ich einfach diese Brücke zwischen jedes Formular-Gruppen-Div. Sie ist das Form-Group-Div , dann BR und dann wieder Form-Group Div, BR usw. Danach sieht das Formular allerdings etwas geräumiger aus. Wir haben eine Aufstellung oben, die offensichtlich ist. Kurs erstellen, oder? Und dann für die Schaltflächen werde ich tun, also was passiert, ist, dass dies keine Formulargruppe ist. Das ist die Schaltfläche Erstellen. Ich vereinfache die Verwendung von BTN primary. Und dann zurück zu List ist ein Ankertag für sich. Also nehme ich einfach dieses Ankertag, füge es in dieselbe Formulargruppe und dann kann ich ihm eine Klasse geben. Und nennen wir es btn, btn dash, dark. In Ordnung, also wenn ich jetzt darauf zurückblicke, sieh dir das an. Also nein, ich kann einen Kurs erstellen, das Formular ausfüllen, okay, und dann kann ich entweder erstellen oder ich kann zur Liste zurückkehren. Damit es für mich für dieses Formular etwas sauberer aussieht. In Ordnung, und wenn ich zurück zur Liste klicke, geht es einfach zurück zum Bearbeitungsformular, das dem Erstellungsformular sehr ähnlich ist, oder? Ich denke also, dass wir hier die gleiche Art von Änderung vornehmen können. Also kopiere ich einfach diese Änderung des Anker-Tags und gehe zu Bearbeiten. Ich werde diesen entfernen , weil sie sowieso in denselben Bereich gehen , dieselbe URL. Also derselbe Anker. Um diese aufzulisten, werde ich eine BTN-Warnung machen und ich sage Änderungen speichern. Das ist also der Schaltflächentext , den ich im Bearbeitungsformular haben möchte. Und ich möchte, dass du weißt , dass, wenn du bereit bist, das zu tun, desto kürzer, das ist es, was du tun willst. Also mache ich diese Warnung und wir haben denselben schwarzen Knopf , der zu LR zurückkehrt. Und dann muss ich das Formular selbst hier bearbeiten. Das heißt also Kurs bearbeiten in einer Zeile. Und wir können ein paar Break-Tags hinzufügen. Das passiert, wenn Sie einen Klick verpassen. Lassen Sie uns also einige BR-Tags zwischen unseren Formulargruppenabschnitten hinzufügen . In Ordnung, jetzt, nachdem wir all das gemacht haben, gehen wir los. Kurs bearbeiten, benannt , noch einmal vor dem Button-Abschnitt. Okay, los geht's. In Ordnung. Jetzt wissen Sie also, dass Sie beim Speichern von Änderungen sicherstellen müssen, dass Sie das tun möchten , und wir können darauf zurückkommen. In Ordnung, bisher sieht es gut aus. Gehen wir also zurück zur Liste und dann lassen Sie uns alle Details auf der Detailseite sprechen, die Interpretation, wie die Details aussehen sollen. Das ist neuer. Ich werde mich hier wirklich nur auf das Layout konzentrieren. Also werde ich einfach die Kursdetails oben sagen. Und wir können das für entfernen, also nennen wir das eine Datentabelle in HTML. Und du hast im Grunde ein d t und das d, oder d d, oder? Also Datenliste, und dann haben Sie die Datenzeilen und die Datenspalten. Ziemlich viel. Das wäre das Etikett und dann wären das die tatsächlichen Daten. Wenn Sie das ändern möchten, können Sie. Ihre Interpretation davon hängt natürlich davon ab, wie Sie diese Seite bewerten. Ich werde das Layout selbst nicht ändern. Ich werde mich einfach auf die beiden Tasten konzentrieren , die wir hier sehen und die wir haben. Eddy dreht die Liste zurück. Also werde ich einfach die Klassen, die wir haben, wiederverwenden. Btn, btn Dash Warnung, wenn du bis zum Ende gehen willst. Und für Geld aufzulisten btn, btn dash dark. In Ordnung, und es wird das Rohr zwischen ihnen entfernen . Und dann sind das die Details. Ich bin also nicht bereit , hier zu viel zu tun. Wenn wir zur Liste zurückkehren und dann mehr mit dem Löschen machen können. Beim Löschen wird uns etwas wie die Bestätigung angezeigt, die Detailseite, tut mir leid. Und dann bestätigen oder löschen wir oder kehren zur Liste zurück. Ich werde die Löschseite nicht ändern da wir später die Löschfunktion so ändern werden, dass wir, wenn eine Person von hier aus auf die Löschfunktion so ändern werden, dass wir, wenn Löschen klickt, sie dazu auffordern. Bist du sicher? Und dann, wenn sie es bestätigen, und dann machen wir einfach weiter und machen es. Also diesen Double-Hop, bei dem du es dir ansiehst und dann löschst, das werde ich entfernen. Ich werde also keine Energie darauf verwenden, diese Seite zu ändern. Aber nein, ich denke, dass wir auf unserer Website ein besseres Erscheinungsbild haben , sie ist bunter. Und diese Farben erzählen natürlich eine Geschichte. Die Farbe wird dem Benutzer darüber informiert was er möglicherweise tut, wenn er diese spezielle Option wählt. Wenn Sie andere Farben wünschen, können Sie sich natürlich die Bootstrap-Paletten ansehen, sehen, welche anderen Farben es gibt und welche Schüler einfach zu verwenden sind, und sie verwenden oder sie basierend auf Ihre Präferenz oder Ihre Branding-Bedürfnisse? Nein. In der Zwischenzeit möchte ich Sie ermutigen, weiterzumachen und die gleiche Eutrophierung für Dozenten und Studierende wir gerade gemeinsam für Lehrveranstaltungen durchgemacht haben. Meine Herausforderung an Sie besteht darin, den Dozenten und Studierenden auf der Grundlage unserer Ansichten Ihre eigenen Gestaltungselemente hinzuzufügen den Dozenten und Studierenden auf der Grundlage unserer Ansichten Ihre eigenen Gestaltungselemente . In der nächsten Lektion werden wir nun diese dynamischere Löschfunktion implementieren . Und dann sehe ich dich. 28. Mit jQuery löschen: Willkommen zurück, Leute. In dieser Lektion werden wir einen dynamischeren Löschvorgang implementieren . Die Realität ist nun, dass wir für das Löschen nicht unbedingt löschen und dann zu einer anderen Seite wechseln müssen . Andererseits, obwohl es eine gute Maßnahme ist, sicherzustellen, dass wir sicher sind , dass wir beide sind , löscht den Warenkorb-Datensatz. Aber was wir tun wollen, ist, dem Benutzer zu ermöglichen , genau hier zu bestätigen. Sobald sie dies bestätigt haben, löschen wir im Hintergrund und laden die Seite erneut. In Ordnung, was wir also tun werden, ist einen Bestätigungsbildschirm zu implementieren. Ich werde diese Bibliothek namens Suites Alerts verwenden. Seats Alert ist eine sehr nützliche Bibliothek , mit der wir einige schöne Eingabeaufforderungen erstellen können , die tatsächlich ein Beispiel enthalten. Und ich gehe direkt zu dem Beispiel über, das wir verwenden werden ist ein bestätigter Dialog mit einer Bestätigungsschaltfläche. Wenn wir also „Versuch es mit mir“ sagen, wird es angezeigt und es fragt nur: Bist du sicher, dass du das nicht rückgängig machen kannst? Natürlich können wir die Nachrichten anpassen , die angezeigt werden. Und dann können wir dem Benutzer ermöglichen, den Löschvorgang zu bestätigen oder abzubrechen, was er gerade getan hat. Dann ist hier der Beispielcode, den wir brauchen, oder? Fangen wir also mit der Installation an. Also springe ich einfach zur Installationsseite und sie werden uns erklären, wie es installiert wird. Wir können npm verwenden, aber wir werden npm nicht verwenden. Wir werden einfach den CDN-Link verwenden , den sie uns angeboten haben. Ein CDN ist so ziemlich nur eine gehostete Version der Skriptdatei oder der Assets, die Sie benötigen würden, um die Bibliothek zu verwenden, oder? Wir können also ein CDN verwenden. Andernfalls könnten wir tatsächlich die tatsächlichen Assets, die J -, S- usw. Dateien, abrufen und sie in das Projekt einfügen. Aber wie gesagt, wir verwenden einfach das CDN. Wenn wir das kopieren, springen wir einfach zurück zu unserem Visual Studio. Kodierung. Projekte, die in den Ansichten nicht geschert werden, werden in das Layout übernommen. Und wir werden den CDN-Link genau hier im Layout platzieren . Ich werde es nach jQuery setzen , weil es von jQuery abhängt. Ordnung ist also wichtig. Es muss nach der jQuery kommen. In Ordnung? Also jQuery, dann das und dann die anderen Skriptdateien, die wir haben. In Ordnung. Also nachdem wir es hinzugefügt haben, einfach durch einfaches Kopieren und Einfügen, denn diese URL wird tatsächlich ergeben. Lassen Sie mich Ihnen nur zeigen, dass uns das Auge tatsächlich dazu bringen wird , genau dort zu sitzen. Das ist die Skriptdatei, auf die immer verwiesen wird , sobald das CDN da ist. Nein, wir können weitermachen und das Beispiel auf unseren Websites verwenden. Also bin ich bereit, mir diesen Code auszuleihen. Ich springe wieder rüber und lass uns mit Pferden beginnen, oder? Indexseite. Nun, es gibt mehrere Möglichkeiten, wie Java-Skript in R in der Kernanwendung ausgeführt werden soll, oder? Wir können das JavaScript direkt hier im Layout schreiben. Welcher Punkt ist globaler, weil die Layoutseite natürlich für jede einzelne Seite da ist, aber dann wollen wir nicht unbedingt, dass das JavaScript ausgelöst wird oder auf jeder einzelnen Seite verfügbar ist. Wenn wir also wollen, dass es auf jeder einzelnen Seite verfügbar ist, platzieren wir es hier weltweit, oder? Egal, ob wir bereit sind, unseren eigenen Skriptbereich zu erstellen, oder ob wir auf eine ganze Skriptdatei verweisen. In diesem Abschnitt können wir das weltweit tun. Sie werden aber auch feststellen, dass wir unter all dem dieses Ding namens Render-Sektion haben. Und dieser Abschnitt wird Skripte heißen. Was bedeutet das nun? Das bedeutet, dass ich in jeder Ansicht, ein bestimmter JavaScript-Code oder ein bestimmtes JavaScript-Skript ausgeführt werden soll, das Vorhandensein dieses Abschnitts in dieser spezifischen Ansicht aufrufen und den JavaScript-Code schreiben kann spezifischen Ansicht aufrufen und den JavaScript-Code schreiben , der für diese Ansicht spezifisch ist . Zum Beispiel, wenn ich nur möchte, dass mein Sweet Alert auf der Indexseite für Kurse verfügbar ist. Ja, der CDN-Link ist, oder die gesamte Skriptdatei ist global verfügbar, aber ich rufe ihre Funktionalität nur in dieser Ansicht auf. Ich kann diesen Abschnitt am Ende der Datei erstellen. Normalerweise setze ich es an das Ende der Datei, aber es wird dynamisch in Slotts generiert. Oder wir sagen, ich wäre wissenschaftlicher Teil. Und dann nennen wir das Sexuelle beim Namen, der , wie ich mich erinnere, Skripte genannt wird. Das sind immer die Skripte hier, okay? Also kann ich es mit seinem Namen aufrufen. Und dann kann ich dort mein Script-Tag eingeben und dann anfangen die JavaScripts zu schreiben , die ich für diesen Abschnitt ausführen möchte. Ordnung, also werde ich zuerst einen ganzen jQuery-Abschnitt erstellen. Wir rufen die Funktion auf. Und dann werde ich sehen , dass das unrein ist. Wenn also auf diese Schaltfläche zum Löschen geklickt wird , wollte ich das wirklich tun. Wie identifiziere ich , dass Knöpfe benötigt werden? Wenn Sie also noch einmal eine Auffrischung von JavaScript wünschen, schauen Sie in meinem Webentwicklungskurs in dem JavaScript verwendet wird. Aber wann immer ich ein bestimmtes Element haben möchte, muss ich es entweder mit einem Namen oder mit einer anderen Klasse referenzieren muss ich es entweder mit einem Namen oder mit einer anderen Klasse referenzieren, von der ich denke, ich gebe ihr einfach eine andere Klasse. Ich nenne es einfach Deep Btn. Das ist also meine Klasse. Es wird nicht dem Zweck dienen, ihm ein Styling zu geben. Ich gebe ihm nur einen Klassennamen, oder? Dann sage ich, wenn auf diese Schaltfläche geklickt wird, also Dollarzeichen und ich verwende natürlich einfach jQuery, Punkt tut mir leid, Anführungszeichen, aber lösche btn, richtig, sagt, das Element zu bekommen, das das Kreuz hat lösche btn. Und dann habe ich mich registriert, ich habe auf Veranstaltungen geklickt. Also onClick, ich möchte diese Funktion auslösen und verwende E für das Event-Argument. In Ordnung, also ziemlich großes jQuery-Objekt. Und dann sind wir innerhalb dessen eher unsere Funktion. Und dann suchen wir darin Klickereignissen für jedes Element, das die Klasse delete btn hat, was in unserem Fall unsere eigentliche Schaltfläche zum Löschen ist. Wenn das passiert, nein, ich kann den Beispielcode, den wir gerade von der Swell-Website entfernt haben, einfügen und ihn einfach so formatieren, dass der Swell-Website entfernt haben, einfügen und ihn einfach er etwas sinnvoller aussieht. In Ordnung. Also so ziemlich, lass mich einfach gehen. Ziemlich. Wir sehen , dass, wenn darauf geklickt wird, diese Swale-Alarme auslösen, oder? Titel. Bist du sicher, dass du das nicht rückgängig machen kannst? Und es ist ein Warnsymbol. Dann zeigen wir die Schaltfläche Abbrechen. Dann können wir die Bestätigungsfarbe und die Farbe der Schaltfläche „Stornieren“ festlegen . Wir sehen, dass sie hier zum Hexadex zurückkehren , aber das ist in Ordnung. Und dann kannst du ja sagen, es löschen. Und wenn sie das bestätigen, also beachte nein, es wird zuerst dieser Teil ausgelöst, das ist die Aufforderung. Dann heißt es, dann bewerte die Ergebnisse. Die Ergebnisse wären das, was sie anklicken, unsere Bestätigung stornieren. Nein. Sie werden sagen, wenn es bestätigt ist, wenn das Ergebnis bestätigt ist, was bedeutet, dass Sie auf die Schaltfläche Bestätigen geklickt haben, was machen wir dann? In Ordnung, also was machen wir, wird verschiedene Teile haben. Was wir tun wollen, ist den Löschvorgang tatsächlich zu starten. Wir können die Bestätigung anzeigen, ja, aber wir möchten den Löschvorgang auch im Backend starten . Also für diese Art von Operation tendiere ich dazu, tendiere ich dazu ein Formular zu erstellen, weil wir die Funktionalität bereits haben, oder? Wir haben die Funktionalität bereits in unseren, wir sind in Kursen. Lassen Sie mich also darüber springen , dass natürlich kontrolliert ist und Ihnen zeigen, was das bedeutet. Wir haben bereits die Funktionalität, bei der wir die ID akzeptieren, oder? Und dann geben wir es gebraucht weiter, und dann wird es Erich zum Index vorlesen. Ich muss also wirklich nichts Besonderes schreiben. Stattdessen werde ich ein Formular erstellen, das dem eigentlichen Formular ähnelt , das sich hier in der Delete-Methode befindet. In Ordnung, also werde ich das einfach kopieren, brauche alles drin. Kopiere es einfach. Ich brauche kein Geld, um es aufzulisten. Ich benötige nicht einmal einen Absenden-Button, weil ich eine jQuery verwenden möchte , um die Einreichung in meinem Namen durchzuführen. Okay, hier wird es aber aufregend. In Ordnung? Wir haben also unsere ASB-Option Löschen. Und dann haben wir diese Eingabe , die eine Bindung für ID hat. Jetzt erhalte ich all diese Fehler nicht hier, weil es heißt, dass der Kurs „Unzählige Augen“ keine Definition für ID enthält , oder? Das zahllose Auge hier oben, das ist eine Sammlung, hat keine ID, weshalb wir forEach machen mussten , um zum ID-Element zu gelangen. Also eine Reihe von Anpassungen hier. Erstens muss ich dieses Ankertag in eine Schaltfläche umwandeln, weil Buttons Formulare einreichen, keine Anker-Tags, oder? Wenn Sie sich alle Formulare ansehen, werden Sie feststellen, dass es sich bei all diesen Formularen entweder um Eingaben mit Fleischsorten oder um tatsächliche Button-Tags handelt . Also werde ich einfach das neue Element erstellen , anstatt das , das da ist, zu zerstören. Ich wollte ein neues erstellen. Also sage ich Button. Wir geben ihm ein Datenattribut. Dies ist eine coole Methode, die es ermöglicht, einem Element in HTML tatsächlich einen Wert zuzuweisen , sodass der Wert, den ich zuweise, dem Wert entspricht , den die Artikel-ID hat. In Ordnung? Ich wollte dir den gleichen Kurs geben, weil es natürlich der Löschen-Button sein muss. Da ich das also als Löschtaste habe, werde ich es aus dem Ankertag entfernen. Und dann werde ich ihm sagen, dass sein Typ dem Button entspricht. Es wird also noch nicht versucht, ein Formular einzureichen. Es sollte einfach rumsitzen und zuhören, oder? Und dann können wir einfach Löschtaste, Text sagen. In Ordnung. Ich markiere das einfach. Löschen Sie das alte, damit wir den Klick nicht verpassen. Jetzt haben wir also eine Schaltfläche mit der Klasse delete btn. Und es wird unseren süßen Alarm auslösen. Wann immer es angeklickt wird, wissen Sie, wann es angeklickt wird. Was wollen wir tun? Wir wollen den ID-Wert von hier nehmen, ihn in das Formular einfügen und dann das Formular abschicken, sodass es nicht möglich ist, zum Controller gehen und tun, was er auf natürliche Weise getan hätte. Also schneiden wir es einfach scharf aus. Wir verwenden JavaScript, um uns bei diesen Abkürzungen zu helfen. Ordnung, also lassen Sie uns zuerst die Eingaben ändern. Ich möchte also nicht, dass es vorher ist, sondern ich muss ihm einen Ausweis geben. Was also passiert, ist, dass ASB ich glaube, wir haben es uns schon einmal angesehen, automatisch die ID- und Namensattribute für das Element einrichtet , von dem es sagt , dass es zuvor war. In Ordnung? Also können wir das tatsächlich außer Kraft setzen. Wir können diese manuell eingeben. Ich kann also sehen, dass dies die Kurs-ID ist. Das ist eher der Name oder die ID des Elements. Und dann wäre der Name hier einfach Id. In Ordnung? Id, weil dies hier mit dem erwarteten Parameter übereinstimmen muss . In Ordnung? Was wir jetzt tun können, ist, wenn die Person bestätigt, dass sie diese Löschung durchführt, okay? Ich kann sagen, dass es gelöscht ist. Aber wirklich und wahrhaftig, ich möchte sagen, gib mir den Button, auf den geklickt wurde. Var-Schaltfläche ist also gleich. Und wenn ich dann nur ein Dollarzeichen verwende, erhalte ich das Objekt , das das Ereignis ausgelöst hat, nämlich die Schaltfläche, auf die geklickt wurde. Dann möchte ich mir die ID über den Button holen. Also sage ich BTN-Punktdaten und gebe mir die ID. In Ordnung? Also jedes Mal, wenn Sie diese Datenattribute in Ihrem HTML verwenden und das, was in diesen Datenattributen enthalten ist, als Wert erhalten möchten . Dann können Sie in JavaScript immer sagen, holen Sie sich die Elementpunktdaten und dann den Schlüssel für diese Daten. Data Dash ID macht IT also zu diesem Schlüssel. Okay, jetzt, wo ich die Daten von der Taste habe, werde ich sehen, wie Feuer dem Öl geht, bevor wir das Formular abfeuern. Eigentlich muss ich dem den Wert geben. Es gibt also eine Reihe von Schritten, aber wir werden sie einfach zurückblättern, um sicherzustellen, dass wir auf dem richtigen Weg sind. Also Dollarzeichen, öffnen, erhöhen, Anführungszeichen. Und dann ist das Kurs-ID, Hashtag, Kurs-ID, oder? Dann legen wir den Wert dieser Hashtag-Kurs-ID auf den ID-Wert über die Schaltfläche fest. Ich mache es nur Zeile für Zeile. Das könnte alles in so ziemlich einer Zeile gemacht werden, aber ich teile es auf, damit wir alles klar sehen können. Dann wollen wir dieses Formular einreichen. Also, was ich tun werde, ist diesem Formular einen ID-Wert zu geben , damit ich es anhand seiner ID aufrufen kann. Wir können diesen einen Kurs Delete Farm nennen. Alles klar? Und dann werde ich sagen , dass ich eher das Formular oder das Dollarzeichen einreichen möchte . Und dann Hashtag, den Kurs aus Punkt-Subnetzen löschen. Ordnung, das ist ein netter und sauberer Weg und wir nutzen vorhandenen Code. Lassen Sie uns also genau überprüfen , was hier passiert. Erstens, ich ändere dieses Anker-Tag in einen Button. Wenn auf diese Schaltfläche geklickt wird, versucht sie nicht, irgendwohin zu navigieren. Stattdessen werden diese Klickereignisse ausgelöst. Dieses Klickereignis löst dann ein Sweet-Alert-Ereignis aus, bei dem wir den Benutzer dazu auffordern. Bist du sicher? Wenn sie ja sagen, sind sie sich sicher, dass dieser Teil optional ist? So können wir später beurteilen, ob wir wirklich wollten. Aber wir wollen die Daten bekommen, bekommen die Schaltfläche dann die Daten von der Schaltfläche, das ist der ID-Wert , auf dem sie gedruckt wurden. In Ordnung, also Daten-Dash-ID. Und dann möchten wir diesen ID-Wert im Formular selbst festlegen diesen ID-Wert im und das Formular dann absenden. Das erwartete Verhalten ist jedoch, dass, sobald wir diesen ID-Wert hier festgelegt und dann das gesamte Formular abgeschickt haben, zu der Löschaktion mit diesem ID-Wert übergeht . Und das wird diesen Löschvorgang auslösen , der dann zum Index zurückkehrt. Es wird den Eindruck erwecken, dass es gelöscht und die Seite aktualisiert wurde. Es ist keine Illusion. Das ist es, was tatsächlich passieren wird. In Ordnung? Also habe ich die ganze Zeit Dotnet Watch gemacht. Lass uns einfach rüberspringen und das Salz testen. Wenn ich also nochmal hinübergehe und das erstelle, siehe Ich habe gerade Kauderwelsch-Kurs erstellt, richtig. Und ich erhalte diesen fiesen Fehler. Ich glaube, das liegt nur an der Art der eingegebenen Daten. Also lass mich, ich denke, es ist dieser, weil ich die Anzahl der Elemente darin begrenzt habe . Lassen Sie mich einfach sagen, CBS, CW, das wir wieder erstellen. Da haben wir's. In Ordnung. Das sind die Dinge , auf die wir achten sollten , wie wir mit diesen Ausnahmen umgehen, aber lassen Sie uns unsere neue Löschfunktion ausprobieren. Jetzt haben wir also diesen Löschknopf. Wenn ich auf Löschen klicke, erhalte ich diese Aufforderung. In Ordnung, dieser Teil funktioniert also. Wenn ich auf Abbrechen klicke, passiert nichts. Lass mich das noch einmal versuchen. Wenn ich lösche und ja sage, lösche es. Wir haben die Eingabeaufforderungen bekommen. Ja, es wurde gelöscht, aber wir wurden trotzdem aktualisiert. Und da haben wir es. Nein, es gibt keinen Double Hop. Wir erhalten nur eine einfache Bestätigung. Und dann entweder bestätigen oder stornieren. In Ordnung. Jetzt besteht meine Herausforderung an Sie darin, die andere Indexseite nachzurüsten die andere Indexseite ein ähnliches Verhalten zu haben, oder? Ändern Sie diese Löschtaste so , dass sie eine süße Warnung verwendet, die Sie in das Formular eingeben müssen, die verschiedenen Schaltflächen platzieren müssen, Dinge, von denen Sie dieses Beispiel haben, von dem Sie dieses Beispiel zum Auslösen haben. Also kann ich das jetzt entfernen, dieses Ankertag, und das ist jetzt mein Löschen-Button. Und Sie sehen, obwohl dies eine Schaltfläche ist und dies Anker-Tags sind, es nicht wissen, wenn ich Ihnen den Code nicht zeigen würde. Es gibt keine Möglichkeit zu sagen , welcher welcher ist. Also lass mich einfach wieder aufbauen. Da haben wir's. Es gibt also keine Möglichkeit zu erkennen , welches ein Ankertag und welches ein Button ist , es sei denn, Sie untersuchen das Element oder tun etwas sehr Aufdringliches. Und wenn wir das Element inspizieren, werden wir hier sehen, dass der Daten-ID-Wert hier drei ist. Genau wie wow, die URL hätte eine Drei drin gehabt. Das Daten-ID-Element hat drei, also schnappt es sich das und platziert es dann in dieser Form, ich weiß , dass sie leer ist, oder? Es hat keinen Wert darin. Sobald wir jedoch auf Löschen klicken , wird dieser Wert dort platziert und dann gesendet. Und Sie sehen hier, das ist das Anti-Fälschungs-Token, über das wir zu Beginn des Kurses gesprochen hatten. Das ist also sehr wichtig für die Sicherheit, da Sie nicht möchten dass die Leute einfach Löschanfragen für Elemente mit der ID drei senden können . In Ordnung, das ist also sehr wichtig für den Schutz, bei dem dieses Anti-Fälschungstoken zum Zeitpunkt der Anfrage validiert wird zum Zeitpunkt der Anfrage validiert wird bevor das Löschen durchgeführt wird. Aus diesem Grund würde ich empfehlen, dieses Formular für diese Art von Operation zu verwenden. Jedes Mal, wenn wir Daten erweitern wollen, sollten wir immer ein Formular verwenden. Jetzt, da wir mehr interaktive Löschvorgänge haben, können wir mehr interaktive Tabellen erstellen. Wenn wir also zurückkommen, werden wir uns ansehen, wie wir die Anzeige von ArrayLists mithilfe von Datentabellen verbessern können . 29. Datatables hinzufügen: In dieser Lektion installieren wir Datentabellen , eine jQuery-basierte Bibliothek , die die Funktionalität unserer typischen Tabellen erweitert. Nun, hier ist ein Beispiel speziell für Bootstrap Five optimiert wurde. Ordnung, und Sie können dorthin gelangen, indem Sie sich mit data tables.net Slash Beispiel Slush Styling Slash Bootstrap-Datei Punkt HTML befassen . Von hier aus werden Sie sehen, dass unser Tisch so aussehen wird. Es verfügt über Paging und bietet die Möglichkeit, mehr oder weniger Einträge gleichzeitig anzuzeigen , sowie eine dynamische Suche. Wenn ich also nach etwas mit den Buchstaben TR gesucht habe, wird es sofort mit dem Filtern beginnen. Das ist eine sehr coole Möglichkeit, unsere Tabellen attraktiver und datengesteuerter aussehen zu lassen . Im Folgenden zeigen sie auch, wie wir die Integration durchführen können. Also müssen wir diese Initialisierungszeile in JavaScript machen. Wir haben das Beispiel der Tabelle in HTML, wir werden dort haben, wo es mir nicht an Tabellen mangelt , also das ist in Ordnung. Und dann haben wir die CSS-Assets, die benötigt werden, oder? Fangen wir also mit den JavaScript-Teilen an. Sie haben uns ein paar CDN-Links gegeben. Also das erste, was wir brauchen, ist jQuery. Wir haben bereits jQuery, weil das bei unseren Projekten sofort einsatzbereit und sie einfach zurück zum Layout springen. Wir können sehen, dass wir bereits jQuery haben. Das ist in Ordnung. Was brauchen wir noch? Wir benötigen den CDN-Link zur jQuery-Datentabellendatei und wir benötigen einen CDN-Link zur Bootstrap-JS-Datei. Also, was ich mache, ist diese beiden Zeilen zu duplizieren. Sind die Linien für Süßigkeiten wachsam? Und dann kopiere ich einfach die neuen CDN-Links hinein. In Ordnung, sie sind also sehr wachsam. Also das nächste, das erste Duplikat, werde ich es durch den CDN-Link ersetzen , zwei Datentabellen min. Und dann werde ich den zweiten genauso ersetzen. In Ordnung. Jetzt haben wir die JavaScript-Dateien für Datentabellen in unserer Layoutdatei enthalten. Als nächstes brauchen wir das CSS, und sie geben uns auch die CDN-Links. Und noch einmal, es ist wichtig, der Reihenfolge zu folgen , in der sie sie im CSS auflisten. Ich kann ganz nach oben gehen und ich dupliziere einfach den Bootstrap. Also schmieren Sie den Bootstrap. Und dann nehmen wir den ersten CDN-Link für die CSS-Datei und ersetzen die erste duplizierte Bootstrap-CSS-Referenz. Und dann nehmen wir diesen und machen dasselbe noch einmal. In Ordnung. Da für die Datentabellen natürlich Bootstrap erforderlich ist, benötigen wir zuerst das Bootstrap-Stylesheet. Und dann können wir das Handgelenk hineinstecken. Und dann kommt unsere eigene Seite, CSS, an letzter Stelle. Denn wenn wir es dann brauchen, um etwas unter den ersten drei zu überschreiben, könnten wir das in unserer eigenen CSS-Datei tun. Ordnung, und dann liegt dieser sogar unter dieser CSS-Datei. Also das ist in Ordnung. Jetzt, da wir die Assets enthalten haben, lassen Sie es uns wissen und schauen Sie sich an, wie wir sie initialisieren. Wenn ich also zurück zum JavaScript-Beispiel springe und zeige, dass wir, sobald das Dokument fertig ist, einfach die Datentabelle initialisieren können. Also werde ich das kopieren und zurück zu Kursen springen, die wie gewachsen 04 oder innovative Funktionen sind. Und was wir hier haben, ist eine Tabelle mit der Klassentabelle. Also werde ich die Klassentabelle verwenden, um die Tabelle zu identifizieren, die sich bereits auf der Seite befindet. Ordnung, also was ich tun kann, lassen Sie diese jQuery-Methode oder Funktion bereits ausführen. Also werde ich die Initialisierung für die Datentabelle genau dort platzieren . Wir haben also das Klickereignis, das heißt, es wird registriert , wenn die Seite fertig ist. Wir werden hier dasselbe mit einer Datentabelle machen. Aber das Element, auf das wir abzielen, ist eine Punkttabelle, also jedes Element, das die Klassentabelle hat, das wir ein Element mit einer Klassentabelle haben. Ordnung, also wenn ich das mache, schauen wir uns nach dieser Änderung die Kursseite an oder richtig. Wenn du es dir ansiehst, wirst du nein sehen, ich verstehe all die visuellen Elemente , die wir gerade gesehen haben. Und ich kann sortieren. Ich kann nach Namen sortieren, ich kann nach Code sortieren oder ich kann nach der Anzahl der Credits sortieren. Ich kann. Dieser erfordert keine Suche , weil diese alle gleich sind. Wenn ich filtern möchte, kann ich öffnen sehen und es wird automatisch gefiltert, oder? Also einfach so, ich habe das transformiert. Ich meine, es war schon ein gut aussehender Tisch weil es ein Bootstrap-Thema war. Aber es war irgendwie einfach. Ordnung, ich habe diese Plantabelle in eine Datentabelle umgewandelt , indem nur eine Codezeile nach dem Einfügen in die Assets nur eine Codezeile eingefügt habe. Die Vermögenswerte. Das ist eine einmalige Aktivität , denn weißt du was? Ich kann das auf jeder Seite tun, ich eine Tabelle habe, die ich als Datentabelle anzeigen möchte. Nehmen wir also zum Beispiel die Kurse. Schauen wir uns Literaturvorträge an. Keine Änderung. Lectures läuft immer noch. Wenn ich das ändern möchte, gehe ich einfach zur Indexseite mit den vier Vorlesungen über und ich habe sie bereits geändert, und ich habe sie bereits geändert um die süßen Benachrichtigungen zu erledigen. Also füge ich einfach diesen neuen Datentabellencode in diesen Abschnitt ein. Und dann voila, lass es einfach transformiert werden. Nun, der Nachteil der standardmäßig verwendeten Datentabellen ist, dass, nun ja, die Art und Weise, wie unsere Anwendung geschrieben ist, sie tatsächlich ständig einen Stern auswählt. Wenn wir also 1500500000 Datensätze haben, egal wie viele Datensätze, werden sie immer versuchen, sie alle einmal auf die Seite zu laden . Das Gute an Datentabellen ist, dass wir damit automatisch blättern und die Anzahl der Elemente begrenzt wird, die gleichzeitig angezeigt werden. Am Ende des Tages werden es jedoch immer noch die 500.000 Datensätze im Frontend haben . Dann fangen Sie an, über serverseitige Paging-Aktivitäten usw. nachzudenken . Damit es tatsächlich nur X von der Gesamtzahl der Datensätze zurückbringt Gesamtzahl der , da unser System so klein ist, werde ich mir darüber noch keine Gedanken machen. Aber das ist eine gute Aktivität, um einfach all unsere Elemente zu reinigen . Schau auf unsere Website. Also füge ich das einfach zur Indexseite hinzu und dann können wir es bei dieser Aktivität beenden. Sobald wir diese Transformation validiert haben. In der nächsten Lektion werden wir uns ansehen, wie wir die Anzeige unserer Etiketten aufräumen können . 30. Benutzerdefinierte Etiketten hinzufügen: Willkommen zurück, Leute. In dieser Lektion werden wir uns ansehen, wie wir die Anzeige der Etiketten ein wenig aufräumen können , oder? Nein, die Labels zeigen uns Texte, die mit dem Namen der Eigenschaft identisch sind , was nicht ideal ist, weil sie für Programmierer nicht wirklich menschenlesbar uns sieht es gut aus , weil alles was wir brauchen , um den Code zu schreiben. Aber an unsere Kunden und die tatsächlichen Benutzer des Systems. Das sieht nicht wirklich gut aus, oder? Was wir also tun wollen, ist sie so zu reparieren , dass wir dies nicht auf jeder einzelnen Seite manuell tun müssen, da wir es im Index korrigieren müssen. Wir müssen sie im Erstellen und Bearbeiten und in den Details usw. korrigieren , also wollen wir es einmal korrigieren , damit wir das nicht wiederholen müssen. Keine einfache Lösung dafür wäre , zur Datenklasse zu gehen, richtig, für Schüler. Okay, lass uns mit dem Kurs beginnen , weil wir keine Studenten sind. Studenten, weil sie tatsächlich das Pascal-Gehäuse haben, oder? Also verwende ich die Klasse des Schülers , um mit diesem Beispiel zu beginnen. Die einfache Lösung wäre, hier Anmerkungen hinzuzufügen, da wir dieses Spiel leicht sehen können. Und dann lege den Namen fest. Dann fügen wir einfach die fehlenden Verweise hinzu, welche Datenanmerkungen es gibt, zur Systempunktkomponente , es sind Anmerkungen. Und dann könnten wir sehen, dass der Name gleich ist , und wir legen den Wert fest, den wir wollen, was der erste Space-Name wäre. Einfach indem du das tust. Okay, wenn ich das mache, wenn ich die Benutzeroberfläche aktualisiere, siehst du nein, sie hat einen Vornamen. Wenn ich einen neuen ersten Space-Namen erstellen gehe, ist das in Ordnung, also das ist eine Lösung für jede seltsame Anzeige. Und das liegt daran, dass diese Datenannotation die tatsächlichen Informationen enthält. Als wir unseren Tisch hatten, hatten wir einen Anzeigenamen dafür. Da haben wir's. In Ordnung, das sind also Kurse. Lassen Sie mich Ihnen das auf dem Index für Studierende zeigen. In Ordnung, also Anzeigename für FirstName anzeigen. Obwohl das das Element ist, wird der Anzeigename für seine Anweisungen aus dieser Anmerkung stammen. Wisse, dass das funktioniert. Der Nachteil dabei ist jedoch, dass, wenn sich die Datenbank ändert und wir Racecar Fold oder Elemente zusammenklappen müssen, alles zurückgesetzt wird und das dann nicht mehr gewartet werden kann. Das wäre vergeudete Mühe denn jedes Mal, wenn sich die Datenbank ändert, müssen wir erneut herumschnüffeln und jedes Mal, wenn wir überfordert sind , müssten wir das wiederholen. Und das ist buchstäblich Zeitverschwendung. Die Lösung hierfür besteht nun darin, eine erweiterte Klasse dieser Klasse zu erstellen . Ordnung, also eins, alle Elemente, die aus der Gerüstbauaktivität generiert wurden, waren partiell, schreibe die Modelle, sind alle partiell, sogar der DB-Kontext ist teilweise. In C-Sharp bedeutet partiell, dass ich mehrere Blueprints derselben Datei haben kann . In Ordnung, also hier sind die Blueprints, die uns EF Core gegeben hat. Aber dann kann ich einen weiteren Entwurf erstellen , der diesen ergänzt. Und genau das werden wir tun, um die Situation zu verbessern. Also werde ich eine neue Klasse erstellen und sie im Model-Ordner erstellen. Und du archivierst, ich möchte es Studentendaten nennen. Und dann brauche ich meinen Namespace, was auch sein wird, und ich bin sehr faul. Manchmal leihe ich mir das alles aus und sage Namespace, Namenspunktmodelle. In Ordnung? Dann haben wir unsere Klasse, die aus Schülerdaten besteht. In Ordnung? Nein, das ist natürlich öffentlich, öffentlich. Stimmt das? Jetzt kann ich in unserer öffentlichen Klasse, den Daten der Mentoren unserer Schüler, tatsächlich Eigenschaften definieren, die dem ursprünglichen Schüler entsprechen, oder? Nehmen wir an, ich wollte diese drei Elemente und ich verwende diese drei, weil ich mit ID nichts wirklich überschreiben muss. In Ordnung? Also werde ich diese drei benutzen und sie hier platzieren. Dann kann ich meine Anmerkungen platzieren, sodass ich Anzeige sagen kann. Und der Name ist gleichbedeutend mit. Der Name ist gleichbedeutend mit. Und natürlich benötige ich meine fehlenden User-Statements. Da haben wir's. Und dann wird dies das Feld für den Vornamen sein. Und dann kopiere ich das einfach und verwende es für Nachnamen und Geburtsdatum wieder, korrigiere natürlich die Formatierung und passe dann den angezeigten Text an. Das Geburtsdatum erhält also das Geburtsdatum, Lebensmittelart und der Nachname gehen verloren. In Ordnung. Jetzt haben wir diese definiert und können auch andere Dinge wie spezifische Validierungen tun, oder? Also wenn ich wollte. Um das einzugeben, okay, das sollte niemals mehr als 50 Zeichen sein mehr als 50 Zeichen wenn es auf der Benutzeroberfläche eingegeben Ich kann eine Zeichenfolge mit einer Länge von 50 eingeben, oder? könnte ich sagen. Okay, auf der Benutzeroberfläche ist es vielleicht nicht in der Datenbank, beide auf der Benutzeroberfläche. Ich möchte diese Anforderung erfüllen, oder? sind also Dinge , die wir tun können , um Validierungen und Anzeigen auf der Client-Seite oder auf der Benutzeroberfläche zu erzwingen Anzeigen auf der Client-Seite , oder? Ich werde nicht verlangen, dass ich es nur zeige, und ich brauche keine Zeichenkettenlänge 50, also das ist in Ordnung. Nun, da wir diese Metadatendatei haben, wie verknüpfen wir sie mit dem eigentlichen Datenmodell? Nun, direkt darunter, in derselben Datei, werde ich nur eine Erklärung der Schüler der öffentlichen Teilklasse haben . Denken Sie also daran, ein Teil ermöglicht es mir, die zu haben , die Implementierungen sind die Blaupausen eher an mehreren Stellen. Das wird also auf einem leeren Plan stehen, oder? Aber wenn alles kompiliert ist, wird alles, was ich in diesen Blueprint eingebe , mit dem kompiliert, was ich in diesen Blueprint eingefügt habe. Und dann wird am Ende des Tages alles nur ein großer Plan sein . Also nein, ich muss diesen Blueprint mit den Metadaten der Schüler verknüpfen . Also werde ich die partielle Klasse und die Anmerkung geben, das ist sein Modell-Meta-Datentyp. Möglicherweise müssen Sie eine Benutzungsreferenz angeben. Wenn Sie also einen Fehler bekommen, wenn Sie dieses Modell mit einem Datentyp verbinden, haben wir nur Punkte kontrolliert haben wir nur Punkte kontrolliert und bei den Use-Anweisungen, oder? Dann sehen wir die Art der Studenten-Metadaten. Das ist also der Associate, diese Metadatenklasse mit dem teilweisen Wissen wann ich rübergehe und unsere Seiten aktualisiere, es funktioniert nicht. Es funktioniert nicht. Das liegt daran, dass ich im falschen Namensraum bin. In Ordnung, also habe ich den Namespace auf der Grundlage des Ordners platziert. Ich meine, natürlich, aber die eigentliche Teilklasse befindet sich in einem anderen Namespace. Damit dieser Teil weiß, dass er parteiisch gegenüber dem anderen ist . Eine einfache Möglichkeit, das zu wissen, ist, wenn ich bei gedrückter Strg-Taste darauf klicke, es wird angezeigt, dass kein Telefon referenziert wird, oder? Aber wenn ich dann diese Daten ändere, Namespace in Daten ändere und dann erlaube, dass sie aktualisiert werden, wenn ich darauf klicke, ohne Kontrollklick, wird es wissen, dass, okay, es hier einen Teil der Schüler gibt, und es gibt hier auch einen Teilstudenten, oder? Der Namespace ist also sehr wichtig. Sie könnten diese Metadaten wohl in den Datenordner legen . Die Gerüstbauaktivität überschreibt wirklich nur die Dateien, ignoriert einen Bolzen. Alles, was schon da ist wird nicht gelöscht, aber das liegt an dir. Ich lasse es einfach so wie es ist und lass uns das noch einmal versuchen. Also, wenn ich mich erfrischen, los geht's. Also Vorname, Nachname, Geburtsdatum. Und das sieht viel einfacher zu lesen aus. Viel benutzerfreundlicher, wenn ich auf Details gehe, es ist auch ein fester Thread. Wenn ich zu Bearbeiten gehe, ist es auch behoben. Ich muss also nicht jede Seite durchgehen und diese Änderung in HTML vornehmen, sodass ich einen Ort habe und er überall sonst einen Wert hat. Das ist also eine nette und einfache Möglichkeit die Anzeige- und Labelbereiche unserer, naja, der Anzeige auf unserer Benutzeroberfläche von unseren Klassen aus zu ändern . Sie können also dasselbe mit der Vorlesung versuchen. Fahren Sie fort und erstellen Sie diese Vorlesung und den MetaData-Kurs. Der Teil, an den ich mich erinnere, muss mit dem Namespace übereinstimmen. Und dann können Sie bei Bedarf Ihre eigenen Anzeigenamen und Validierungen hinzufügen . 31. Datenbankänderungen verwalten: In Ordnung Leute, wir haben Feedback zu dem bekommen was wir getan haben, über die Benutzeroberfläche, Funktionalität, alles, und wir haben großartiges Feedback erhalten. Sie lieben es. Der Kunde möchte das System unbedingt benutzen. Aber sie sagten, okay, bevor wir das System vollständig nutzen können, benötigen wir zwei weitere Funktionen. In Ordnung? Für die beiden Funktionen , die sie anfordern , sind also Datenbankänderungen erforderlich. In diesem Fall möchten sie in der Lage sein, Klassen zu verfolgen. Und eine Klasse wird durch einen Dozenten definiert , der zu einer bestimmten Zeit einen Kurs unterrichtet. Und dann wollen sie in der Lage sein Einschreibungen der Schüler zu verfolgen, was bedeutet, dass ein Schüler in eine Klasse eingeschrieben ist. In Ordnung, das bedeutet also, dass wir zwei zusätzliche Tabellen benötigen. Jetzt habe ich das Data Studio und bin bereits mit meiner Instance verbunden , die dunkler läuft. Sie können also auf Pause drücken, Ihr Data Studio aufrufen und bei Bedarf Ihren Dunkler einschalten. Wenn Sie dazu eine Auffrischung benötigen, sollten Sie eine dunklere Benutzeroberfläche haben, auf sollten Sie eine dunklere Benutzeroberfläche haben der Sie einfach zur Liste der Container gehen und nach Ihrem Microsoft Container suchen können und den Sie konfiguriert haben, ich kann einfach klicken Sie auf die Schaltfläche Abspielen. Sobald das eingerichtet ist, können Sie mit Data Studio eine Verbindung herstellen. Und Data Studio leistet im Allgemeinen gute Arbeit bei der Beibehaltung der Verbindungsdetails. Jetzt müssen wir also ein neues Drehbuch schreiben. Also werde ich ein neues Drehbuch veröffentlichen und dann kannst du sehen dass ich hier da weitermache, wo ich das letzte Mal aufgehört habe. Aber in diesem Skriptfenster werde ich mit einer Use-Anweisung beginnen, damit wir wissen, dass wir die Schulverwaltungsdatenbank verwenden müssen. Das Tolle an Data Studio ist, dass Sie diese Use-Anweisung ausführen können, aber Sie können die Datenbank auch aus dieser Dropdownliste von Top auswählen . Ich tendiere dazu, dies trotzdem weil Sie manchmal vergessen zu tun, weil Sie manchmal vergessen, diesen Teil zu tun, und dann möglicherweise ein Skript für die Datenbank ausführen . Fangen Sie also immer mit Ihren Benutzungsanweisungen an. Nein, ich muss zwei neue Tabellen erstellen. Also werde ich eine Tabelle erstellen und Sie werden sehen, wie ich irgendwie die Disziplin breche , weil SQL nicht wirklich zwischen Groß- und Kleinschreibung unterscheidet. Also habe ich zunächst mein Bestes versucht, die Keywords groß zu schreiben. Ich werde dieses Mal nachlassen und nicht so vorsichtig sein. In Ordnung? Also erstellen wir eine Tabelle namens classes und sie erhält eine ID, die int ist, Primärschlüssel und Identität , die immer da sein sollte. Und abgesehen davon, dass ich nur vorschlage, dass es immer da sein sollte, liebt Entity Framework es zu sehen, wenn es einen Primärschlüssel gibt. In Ordnung, das bereitet also große Kopfschmerzen, wenn es um die Verwendung von EF Core geht. Halte die Kiste auf sehr mächtige Weise zurück. Also, was hat die Klasse der Klasse sonst noch , unsere Referenz, die Vorlesungsnummer. Dies ist also das erste Mal, dass wir hier einen Fremdschlüssel verwenden. Die Vorlesungs-ID, die Integer ist, ist ein Fremdschlüssel, der auf die Vorlesungstabelle und die ID-Spalte verweist. Also noch einmal, wenn Sie mit Fremdschlüsseln und Beziehungen nicht so vertraut sind, um meinen Kurs zur Datenbankentwicklung zu beschichten, Microsoft SQL Server für alle. Wenn Sie es jedoch sind, dann sollte Ihnen das sehr vertraut vorkommen, da wir die Klasse natürlich mit der Vorlesung verknüpfen müssen . Und die Klasse muss auch mit einem Kurs verbunden sein. Also müssen wir dasselbe tun und eine Kurs-ID einführen, einführen, die auch eine Ganzzahl und ein Fremdschlüssel ist, der auf den Kurs verweist, ist stabil und die ID-Spalte. Nun, für Nein, sie sagten, sie wollen nur die Zeit. Gehen wir also davon aus, dass, sobald diese Zeit im System ist, bedeutet dies, dass diese Vorlesung diesen Kurs zu dieser Zeit, an jedem Tag der Woche, unterrichtet . Und das wird unsere Klasse ausmachen. Und was wir hier tun oder Entscheidungen hier treffen basiert auf den Geschäftsregeln und Geschäftsanforderungen des Kunden. In Ordnung. Also versuche ich es einfach zu halten. Es ist vielleicht nicht das realistischste System im großen Plan des Wasserschulmanagementsystems. Aber ich halte es einfach, damit wir einige dieser Konzepte durchgehen können. In Ordnung? Die nächste Tabelle wäre die Anmeldetabelle, und ich werde sie einfach hier platzieren. Wir haben Create Table-Anmeldungen. Wir haben immer noch unsere Primärschlüssel-ID. Und dann wird eine Einschreibung von einem Studierenden festgelegt. Wir benötigen also die Studentennummer, Fremdschlüssel, der auf die ID-Spalte in der Studententabelle verweist . Und dann die Klasse, an der der Schüler teilnimmt. Diese Klassen-ID, die auf die Klasse verweist, ist stabil. Deshalb müssen wir sicherstellen, dass wir die Klasse erstellen , bevor wir die Anmeldungen erstellen, da genau dort eine Abhängigkeit von der Tabelle, von den Klassikern besteht. Jetzt haben wir das, wir können rennen. Und das wurde erfolgreich abgeschlossen. Wenn ich also heruntergehe, sehe ich, dass ich jetzt Kurse habe und Anmeldung an zwei neuen Tabellen erstellt wurde. Nun, wie bekommen wir diese beiden neuen Tabellen in unsere Anwendung, oder? Wir haben also bereits Dozenten, Studenten wissen, dass wir neue Kurse brauchen. Also werde ich meine Dotnet-Uhr beenden. Und lassen Sie uns diese Terminologie-Bits aufrufen. Also spreche ich es an und lass mich unsere Schriftgröße erhöhen. Also werde ich denselben Befehl verfassen, den wir beim ersten Mal verwenden, um all diese Elemente zu übernehmen. Also ich habe den Befehl hier und wir können weitermachen, um Ihr Gedächtnis aufzufrischen , was jeder Abschnitt erstellt. Aber nur bei ein oder zwei, was ich in der Vergangenheit gemacht habe, ist tatsächlich eine Teildatei zu erstellen , in der dieser Befehl leben würde, weil dieser Befehl ihn niemals davon abhalten würde , sich mit einer Datenbank zu befassen die Zeit, oder? Also anstatt zu versuchen, es aus dem Speicher neu zu schreiben oder irgendwo abzulegen und zu vergessen, wo ich es hingelegt habe. Ich habe es in eine unvollständige Datei gelegt und hatte es im Projekt. Was ich also tun würde, ist einfach die Porsche-Datei auszuführen , die diesen Befehl ausführen würde. Und das gibt mir einfach das Maß an Konsistenz, das ich brauche. Das können wir uns wahrscheinlich im Bonusbereich dieses Kurses ansehen . Aber jetzt lassen Sie uns den Befehl einfach neu anordnen. Wir haben also Dotnet, EF, EV, Context Scuffled und dann haben wir unsere Verbindungszeichenfolge. Und denken Sie daran, wenn Sie Sonderzeichen in Ihrer Verbindungszeichenfolge haben , insbesondere in dem Passwort , das ich für diese beiden Dollarzeichen hatte, müssen Sie ein einzelnes Anführungszeichen verwenden. in Ordnung? Um die Verbindungszeichenfolge abzurufen, können Sie natürlich einfach zu den entgegengesetzten Dingen wie der JSON-Datei übergehen . Sie können es dort kopieren und einfügen. Dann haben wir den Anbieter , in unserem Fall SQL Server, wir erzwingen, sodass wir das Gerüst so erzwingen, dass es alle Telefondateien im Ausgabeverzeichnis überschreibt , was Daten sind. Und wir wollen keine zur Konfiguration, weil wir es nicht wollen, wir wollen nicht, dass der DB-Kontext versucht, eine eigene Kopie der Verbindungszeichenfolge im Kern zu haben . In Ordnung, nachdem wir all das getan haben, drücken wir die Eingabetaste und lassen es laufen, und es erstellt erfolgreich ein Projekt. Wenn wir zu unserem Datei-Explorer zurückkehren, werden wir feststellen, dass wir jetzt diese neuen Dateien haben. Lass mich ein bisschen herauszoomen. In Ordnung, jetzt haben wir Vorlesung I, die Kurs-ID. Du hast Zeit mit den Navigationseigenschaften, dem Kurs und den Anmeldungen, oder? Das ist es also, was die Klasse auf den Tisch bringt. Einschreibung umfasst Immatrikulation, Studentenausweis, Klassenausweis, Schüler der Klassenklasse. In Ordnung. Jetzt haben wir also einen zusätzlichen Tisch. Also, wozu ich Sie herausfordern würde, ist, die Crowd-Seiten nach diesen beiden Tischen durchzugehen und zu durchsuchen. Sie werden auch feststellen, dass beim Testen Ihrer Benutzeroberfläche unsere Labels nicht verloren haben, weil wir die Metadatenklassen erstellt haben. Das ist gut so. In Ordnung, jetzt können Sie dieselbe Art von Metadaten-Erweiterung für diese erstellen. Falls erforderlich. Sie können sich die Benutzeroberfläche ansehen und sehen, wie einfach sie ist, und sie optimieren , um die Daten, die erfasst werden müssen, genau zu erfassen . 32. Syntaxfehler beheben: In Ordnung, Leute. Also war ich gerade dabei, die Steuerungen für die neuen, die neuen Datenmodelle zu bauen. Und ich habe mit dem Unterricht angefangen und bin eine Reihe von Fehlern gestoßen. Also ich verstecke die Erde nicht vor euch, denn wenn ich die Fehler habe, habt ihr Pfeile, ich möchte, dass wir sie gemeinsam lösen. Ich wollte dir helfen zu verstehen, warum wir diese Fehler bekommen. Nun, das Wort Klasse ist in C Sharp in den meisten Sprachklassen ein Schlüsselwort, oder? Das Problem hier ist also, dass wir die, was wir die Domainsprache nennen, domänenspezifische Sprache haben was wir die Domainsprache nennen, , was in diesem Fall der Aufbau eines Schulverwaltungssystems wäre . Das Wort Klasse bedeutet für eine Schule also etwas anderes als für eine Programmiersprache. Es ist einfach ironisch , dass das Schlüsselwort in der Programmiersprache so wichtig ist, dass es zu Konflikten mit bestimmten Dingen kommt. Hier im Klassen-Controller würden Sie also feststellen, dass die Elemente, die ich scrolle, für uns fehlerhaft sind, damit wir die unterschiedliche Syntax verstehen können , die wir möglicherweise sehen. Hier werden Sie im Zeichenunterricht sehen , dass Werbeaussage wie ein Keyword-Killer ist . Wenn wir also das Wort Klasse für sich selbst sagen würden, würde das zu einem Fehler führen, da Klasse wiederum ein Schlüsselwort ist, das bei der Definition einer tatsächlichen Klasse im Code verwendet wird. Wir können dieses Schlüsselwort also nicht als Variable verwenden. Wenn Sie am Ende ein Schlüsselwort als Variable verwenden müssen, können Sie das Hinzufügezeichen davor setzen. Und dann wird das irgendwie seinen Keyword-Status aktivieren. In C-Sharp. Sei dir bewusst, dass die Fehler, die wir bekommen, das auf dem Schild umgeben. Und es hat versucht zu generieren, ich glaube, es hat nur versucht, klug zu sein und es ist dabei verloren gegangen, oder? Also all diese Zeichen hier, statt der Lambda-Ausdrücke, sind keine illegalen Zeichen, weil er nicht einfach eine Oxidschicht haben kann, sodass wir all diese Zeichen leicht durch ein Lambda austauschen können Ausdruckstoken. Ich benutze immer Q. Du kannst C verwenden, wenn du willst. nicht wirklich wichtig, aber ich wollte nur sichergehen, dass ich darauf hinweise , was diese Fehler verursacht, was diese Anzeichen sind. Sie hatten also nicht das Gefühl, etwas falsch gemacht zu haben, weil es wahrscheinlich eher meine Schuld ist und es Ihre, wenn weil es wahrscheinlich eher meine Schuld ist und es darum geht, ein solches Schlüsselwort zu verwenden ohne auf die Gefahren hinzuweisen, oder? Sobald wir das alles gemacht haben, sollten wir in der Lage sein, einen Dotnet-Build durchzuführen. Lassen Sie mich also erneut einen Dotnet-Build machen. Ordnung, und ich habe ein paar Warnungen, aber nichts, was ich über Boote nach Hause schreiben könnte. Das ist etwas mit der Nullreferenz. Wir werden das etwas später besprechen. Ich war gerade dabei , die Anmeldungen vorzubereiten. In Ordnung. Das sind ein bisschen winzige Boote. Ich bin mir sicher, ihr seid es schon. Ich habe es im Griff. Aber wenn ich ein CLS mache und es dann wieder aufrufe, diesen Befehl für die Anmeldungen. Lassen Sie uns also versuchen, die Anmeldungen gemeinsam zu organisieren. Und nach ein paar Sekunden haben wir jetzt den Registrierungscontroller und die Ansichten eingerichtet. Okay, also ich wollte einfach vorbeikommen und falls Sie diese Schwierigkeit teilen, zeigen Sie Ihnen, dass ich auch Schwierigkeiten hatte und es gibt eine Auswegstabelle. Also wir sehen uns in der nächsten Lektion. 33. Zu GitHub hinzufügen: Ordnung, dieses Modul hat uns also durch einige Aktivitäten geführt . Wir haben uns angesehen, die Benutzeroberfläche mithilfe von Bootstrap Styling vollständig bereinigen, um unserem Workflow einige jQuery-Bibliotheken von Drittanbietern hinzuzufügen . Wie man Labels so anpasst, dass sie nicht jedes Mal überschrieben wir eine Gerüstaktion ausführen und wir ein paar Syntaxfehler stoßen zusammen auf ein paar Syntaxfehler stoßen und unseren Ausweg gefunden haben. Das ist es, was Programmieren wirklich ist. Wir werden auf Fehler eingehen, aber es geht nicht darum, Fehler zu vermeiden. Es geht darum, die Fehler zu beheben und über die Bereiche zu triumphieren, oder? An diesem Punkt haben wir einen weiteren wichtigen Checkpoint erreicht. Und was wir tun werden , ist unsere Check-In- oder Commit-Nachricht einzurichten . Nehmen wir an, das Anpassen von Ansichten und Elementen ist abgeschlossen. Ja, ich finde das gut. könnten Sie wahrscheinlich auch hinzufügen. Sie haben Unterricht und Anmeldungen hinzugefügt. Das ist in Ordnung, aber lassen Sie uns einfach weitermachen und das vorantreiben. Wir sehen uns in der nächsten Lektion. 34. Authentifizierung verstehen: Ordnung Leute, in diesem Abschnitt des Kurses werden wir uns mit der Authentifizierung befassen und warum sie wichtig ist und welche Optionen wir haben. Nein, die Authentifizierung ist wichtig, wenn wir kontrollieren wollen Zugriff auf unsere Anwendung Teil unserer Anwendung ist. Nun, hauptsächlich regelt die Authentifizierung die gesamte Anwendung. Es ist also entweder Teil davon eine Authentifizierung erforderlich ist oder die Wohnheime. In Ordnung? Also zum Beispiel könnte vielleicht jeder auf die Homepage kommen, oder? Und schau und sag ungeöffnet was auch immer. sollten jedoch nur eingeloggte Benutzer Möglicherweise sollten jedoch nur eingeloggte Benutzer diese Links sehen können. Und selbst wenn sie sich den Link merken können, weiß ich, dass sie Schrägstriche sehen und dann versuchen können, dort zu navigieren. Sie sollten sich anmelden oder authentifizieren müssen , bevor sie weitermachen können. Das sind also Dinge, die die Authentifizierung mit sich bringt, oder? Die Authentifizierung erfordert, dass Sie identifizieren, wer Sie sind, und wir überprüfen, wer Sie sind. Dann gibt es noch einen Teil, der Autorisierung genannt wird, was bedeutet, dass jemand zwar berechtigt ist, einen Kurs zu erstellen, aber möglicherweise nicht berechtigt ist, den Kurs zu löschen. Am Ende des Kurses sind sie vielleicht nicht autorisiert, aber sie sind berechtigt, sich die Liste anzusehen und sich die Details anzusehen, oder? Autorisierung bedeutet, was können Sie in meiner Bewerbung tun? In Bezug auf unsere Optionen haben wir jetzt die Möglichkeit, ein eigenes Authentifizierungssystem zu haben . ASP.net Core verfügt über eine eigene Bibliothek, Identity Core , mit der wir Authentifizierungsdienste einfach und nahtlos in unsere Website integrieren können nahtlos in unsere Website integrieren . Jetzt, mit ein paar Befehlen, könnten wir tatsächlich die gesamte oder mindestens 90% der dafür erforderlichen Funktionen aktivieren. Aber dann wird es einige Einschränkungen geben, da es sich um eine Webanwendung handelt. Aber dann möchte der Kunde in Zukunft vielleicht eine mobile Anwendung haben. Oder vielleicht hätten sie, sie hätten gerne mehrere Anwendungen, die denselben Benutzernamen, dasselbe Passwort und dieselben Anmeldeinformationen verwenden . An diesem Punkt muss man also groß denken. Du musst über den Tellerrand schauen, oder? Erstelle ich verschiedene Authentifizierungssysteme für all diese verschiedenen Szenarien und versuche dann, alles zum Laufen zu bringen. Oder versuche ich es zu zentralisieren, muss es aber trotzdem pflegen? Oder lagere ich das einfach an einen Drittanbieter , der all diese Dienste anbietet. Wie auch immer, für diesen Kurs werden wir die letzte Option wählen , also verwenden wir Plattform eines Drittanbieters, die das alles sowieso macht. Die Plattform, die wir verwenden werden, ist also ausgeschaltet. 0.0 bietet sichere Authentifizierungs- und Benutzersicherheitsfunktionen. Es ist in Form eines SaaS. Das bedeutet, dass wir nicht unsere eigenen Daten hosten müssen , falls unsere Datenbank abstürzt Wir haben immer noch alle Benutzerdaten auf dieser Plattform gehostet . Sie ist einfach zu integrieren da sie viele Voreinstellungen haben Integrationen sind viele Überlegungen , die wir ergreifen würden , um sie tatsächlich zu sichern oder zu verbessern. Sie haben bereits darum gekümmert und es ist sehr einfach , sie zu integrieren. Sie können also weitermachen und sich mit off zero, also zero.com, für ein Konto registrieren und sich dann einfach mit Ihrem GitHub-Konto anmelden , weil Sie zu diesem Zeitpunkt bereits ein GitHub-Konto und der Einstieg ist kostenlos. Und in der nächsten Lektion werden wir sehen, was der nächste Schritt ist. 35. Registrieren für Auth0: In Ordnung Leute, also ich gehe davon aus, dass Sie schon weitergemacht und sich angemeldet haben. Wenn du dein GitHub-Konto oder eines der anderen sozialen Icons verwendest , hast du deine Spalten bereits manuell erstellt. Wir sollten alle auf einem Bildschirm wie diesem landen. Das fängt noch nicht an. Das Erste , was sie sehen, ist Integration von Zero in Ihre Anwendung. Und dann können wir weitermachen und eine Anwendung erstellen. Jetzt werden sie fragen, welche Art von Anwendung werden Sie erstellen? Das zeigt also nur, wie umfangreich die Unterstützung ist, die sie anbieten, oder? Denn wenn wir nicht unsere eigene Authentifizierung für all diese Geräte entwickeln sollten unsere eigene Authentifizierung für , könnte das zu einem hohen Wartungsaufwand führen. Du willst also immer deine Schlachten wählen. Sie möchten immer sicherstellen , dass Sie sowohl für Ihren Kunden als auch für das vorliegende Projekt die beste Entscheidung treffen . Aus dieser Perspektive könnten wir also weitermachen und sehen, dass wir einen mobilen Desktop oder eine Befehlszeilenschnittstelle erstellen, wir erstellen Single-Page-Anwendungen die eines dieser Spa-Frameworks verwenden. wir unsere reguläre Webanwendung mit einem traditionellen Entwicklungsframework für das Web? Oder machen wir eine CLI oder Dämonen? Also ich denke, für diesen würden wir auf jeden Fall reguläres Web verwenden wollen , da wir asp.net in der Liste sehen. Und dann können wir ihm den Namen geben. Nennen wir es einfach Schulleitung. In Ordnung. Und dann können wir weitermachen und etwas erschaffen. Nun, das nächste, was sie fragen , ist mir zu sagen, welche Technologie wir verwenden, oder? Hier ist eine größere Liste aller möglichen Technologien, die auf der Grundlage unserer Auswahl verwendet werden könnten . Aber natürlich verwenden wir asp.net Core. Und wir wählen das Drei-Punkt-Tool der Version, da ab drei alles irgendwie standardisiert war. Also können wir weitermachen und diesen auswählen. Und nein, sie geben uns diese Client-ID und wir können verschiedene Einstellungen vornehmen und sie zeigen uns sogar , wie wir mit der Integration fortfahren können, okay, und hier ist der Support. 3.1. 565 unterstützt auch 6.7, funktioniert reibungslos zusammen, sodass wir definitiv mit dem fortfahren können, was wir hier tun. Wenn wir also einfach durchblättern uns genau durch das führen, was wir tun müssen, holen Sie sich Ihre Anwendungsschlüssel. Sobald Sie sich angemeldet haben, müssen Sie zu den Anwendungseinstellungen gehen, und dann können Sie bestimmte Dinge einrichten. Ordnung, lassen Sie uns zunächst zu den Anwendungseinstellungen gehen und wir müssen einige URLs festlegen, oder? Also werde ich das einfach in einem neuen Tab öffnen. Und dann haben Sie aus der Liste wahrscheinlich bereits eine Standard-App und Ihr Update wurde gerade erstellt, sodass Sie dieses auswählen können. Und das ist unsere Domain, das ist unsere Kunden-ID. Wir benötigen diese Konfigurationen für später, aber vorerst müssen wir unsere URL einrichten. Wir haben eine so genannte Load-Callback-URL und dann morgen ein Load-Logo, so weiter. Diese URLs benötigen wir, um die URL der Anwendung zu verwenden. Lassen Sie mich aus unserem Eigenschaftenordner, lawn settings.js, zu unserem Projekt zurückkehren aus unserem Eigenschaftenordner, lawn settings.js, zu unserem Projekt . Wir werden uns diese URL ausleihen. Und das URL-Format muss dieser URL-Schrägstrich für das Wort Callback sein. Und dann können wir für das Logo morgen einfach die Standard-URL belassen. Wenn wir nun mehrere Callback-URLs bereitstellen müssten , zeigt dies an, wo wir uns in der Entwicklung befinden. Und dann haben wir vielleicht eine Staging-Umgebung, Schärfeumgebung und die eigentliche Produktionsumgebung. Wir werden mehrere dieser URLs für dieselbe Anwendung haben , oder? Wir können also einfach ein Komma machen, sie trennen und jedes einzelne repräsentiert nur die URL nach Bedarf. Also solange wir da drin sind, können wir es so lassen. Nachdem wir diese Werte gesetzt haben, stellen wir sicher, dass wir hier nach unten gehen und auf Änderungen speichern klicken. Sobald wir das getan haben, möchten wir fortfahren und die Konfigurationsdateien oder diese spezifischen Schlüsseldateien zu unserer Anwendung hinzufügen die Konfigurationsdateien oder . Also kehren wir zurück zum Visual Studio-Code, dieses Mal gehen wir zu unseren App-Einstellungen und können dann einen neuen Abschnitt erstellen. Und ich mache das einfach auf einem Load-Hosts und wir nennen das von Null. Und dann wird dieser Abschnitt zwei Schlüssel haben, wird eine Domain haben. Lass mich meine rote Domain holen. Da haben wir's. Und das wird einen Wert haben. Und dann machen wir mit der Client-ID. Dies sind also Werte , die dazu beitragen, dass Null weiß, welche Anwendung eine Anfrage stellt. Diese Werte werden uns also hier gegeben. In Ordnung, das ist also unsere Domain, das ist unsere Kunden-ID. Also leihe ich mir diesen Domainwert und füge ihn dort ein. Und ich leihe mir diesen Zentralitätswert aus und füge ihn hier ein. Jetzt, wo wir das haben, müssen wir das NuGet-Paket integrieren, oder? Lassen Sie mich die laufende Anwendung hier beenden und alles löschen. Also brauchen wir ein Dotnet Add Package und wir fügen hinzu. ASP NET Core-Punkt-Authentifizierung mit Nullpunktauthentifizierung. Wenn wir das tun, geben wir ihm ein paar Sekunden und wissen, dass es installiert ist Wir können mit dem nächsten Schritt fortfahren. Bevor ich zur nächsten Folie übergehe, wollte ich nur darauf hinweisen, dass all das, was ich sehe, genau hier dokumentiert ist. Zwischen dem, was ich sehe, und dem, was dieses Dokument tatsächlich sieht, machen wir also was dieses Dokument tatsächlich sieht, dasselbe, oder? Das ist also ein Schritt, den wir gerade gemacht haben. Das installierte Paket wäre, wenn Sie Visual Studio verwenden und den NuGet-Paketmanager verwenden, wo nicht. Also verwenden wir das Dotnet-Add-Paket, seem, seem old com, oder? Als Nächstes möchten wir unseren Diensten die Konfigurationen hinzufügen , von denen wir wissen, dass wir sie von Null verwenden werden. Nein. Die Syntax hier ist etwas anders, und das liegt hauptsächlich daran, dass dies wirklich für Dotnet Core 3.1 ist, 56.7 haben alle eine anders aussehende program.cs, aber es ist das gleiche Konzept, oder? Damit wir uns das ausleihen können, springen Sie zu unserem Projekt goto in unsere Datei program.cs. Und lass mich ein bisschen herauszoomen, damit du es ein bisschen besser sehen kannst. Da haben wir's. Lassen Sie mich einfach dieses Terminal in den Diensten direkt über den AD-Controllern mit Ansichten schließen in den Diensten direkt über den , die ich hinzufügen möchte und die aus dem Beispiel stammen. Nun, hier liegt offensichtlich ein Fehler weil es sich nicht mehr um Dienste handelt. Es ist jetzt Builder Dot Services, aber das ist der einzige große Unterschied. Und dann können wir die Using-Anweisungen für diese fehlende Bibliothek hinzufügen , in der wir eine Konfiguration haben und es wird nicht die Builder-Punkt-Konfiguration heißen, also kann ich diese beiden einfach ersetzen Referenzen zu Konfigurationszitaten. Da haben wir's. Jetzt schauen wir uns die Konfiguration an und suchen, suchen den Nullbereich und verwenden dann den booleschen Wert. Und dann dasselbe für den Client-Schlüssel. Schließlich möchten wir die Authentifizierung hinzufügen. Also wollen wir die hinzufügen, die Middleware, die die Authentifizierung unterstützt. Wir haben also bereits eine, die die Autorisierung unterstützt. Ich werde es einfach duplizieren und das oberste verwenden , um zu sagen, dass Authentifizierung und alles verwendet werden. Das ist sehr wichtig. Reihenfolge ist wichtig, da wir uns in der Pipeline authentifizieren müssen, bevor wir versuchen, eine Autorisierung vorzunehmen. Denk dran, das heißt, mir zu sagen, wer du bist dann heißt das okay, was kannst und kannst du tun? Wir wollen nicht damit beginnen, herauszufinden, was Sie tun können und was nicht , bevor wir feststellen , wer Sie sind, oder? Das ist also sehr wichtig für den Boden. In Ordnung, jetzt haben wir die Registrierung des Dienstes abgeschlossen die Registrierung des Dienstes und kennen die Konfiguration der Authentifizierungs-Middleware. Gehen wir zum Login über. Jetzt geben sie uns ein Beispiel für einen Account-Controller, oder? Also kopiere ich einfach diesen Codeblock und gehe zurück zu unserem Visual Studio-Code. Und im Controller-Ordner werde ich eine neue Datei erstellen , die sie nicht Cone Controller Punkt cs nennen möchte . Und dann werde ich einfach einfügen. Ordnung, ich gebe ihm auch einen Namensraum, nur um sicherzustellen, dass wir gewisse Einheitlichkeit haben, sagt School of Management App Punkt MVC-Controller, oder? Und dann Semikolon. Und der Controller benötigt dafür diese Using-Anweisung. Ordnung, jetzt haben wir also einen Cone-Controller und von diesem Icon-Controller aus wird die Anmeldung aufgerufen. Die Rückgabe-URL bedeutet im Grunde, wann immer Sie sich anmelden, kehren Sie zu den Schrägstrichen zurück, was die Startseite ist. Aber hier unten sagen wir, dass die Var-Authentifizierungseigenschaften neuen Anmeldeauthentifizierung im Properties Builder entsprechen. Und dann deutet das darauf hin , dass wir zu einem klugen Reader-Benutzer gehen, nachdem ich mich angemeldet habe und so und so, oder? Das ist also die Rückgabe-URL. Wenn du also willst, dass sie woanders hingehen, könntest du das tun. Oft, wenn Personen auf einer bestimmten Seite auf Anmeldeschaltflächen klicken , wird diese Seite als URL angezeigt. Dies ist also der Standardwert für den Fall dass keine Rückgabe-URL angegeben wurde, dann wird einfach darauf umgeleitet. Andernfalls leiten wir immer zu dieser Rückgabe-URL weiter. Dann werden wir Probleme in UP-Kontexten sehen , die sich dieser Herausforderung stellen Async wird mit freundlicher Genehmigung von oder ohne Nullpunkt-ASP NET Core-Punkt-Authentifizierung, Bibliotheksreferenz geliefert . Und dann ist es so ziemlich einfach das Authentifizierungsschema einzurichten, das aus dieser Konstantenklasse stammt, die auch aus diesem Namespace stammt. Und wir geben die Immobilien entsprechend weiter. Okay, sobald das passiert, werden wir tatsächlich zu einem Pfirsich ohne Null weitergeleitet. Es wird also von unserer Anwendung weg zu dieser Anwendung navigieren , die alles Null ist, den Benutzer zur Authentifizierung laden und dann zurückgeschickt. Und dann wird es den Zeitplanleser zu dieser Rückgabe-URL geben. Den nächsten Teil der Anwendung oder dieses Setups, auf den ich achten möchte, können wir das machen, das Benutzerprofil. Ich denke, das wäre auch nett. Wir können das also kopieren , weil es sich im selben Icon-Controller befindet. Beachten Sie jedoch, dass es diese Autorisierung bei der Notation hat. Lassen Sie mich das kopieren und lassen Sie mich es einfach in unseren vorhandenen Icon-Controller einfügen . Und dann gehe ich einfach zum Logout und kopiere das auch. Und dann können wir genau das durchmachen, was wir gerade sehen. Hier. Autorisiert eine Anmerkung , die dieser Aktion grundsätzlich mitteilt, dass ein authentifizierter Benutzer erforderlich , um darauf zugreifen zu können. Nein, es fehlt die Verwendung von Anweisungen seit der Erde, also Kontrollpunkte und dann erhalten wir diese mithilfe der Anweisung. Für die 3M-Typen fehlt uns auch eine Using-Anweisung. Also Behauptungen, was sind Ansprüche? Ansprüche sind Informationen, die in einem sogenannten Token enthalten sind . In Ordnung, lass mich das für dich aufschlüsseln. Wenn wir zu Off Zero wechseln und uns authentifizieren, senden sie ein Token zurück. Dieses Token wird nur ein codierter Zeichenkettenblock sein , der alle Informationen über Sie enthält. Nun, alle relevanten Informationen , hoffentlich nichts Sensibles. Und deshalb ist es wichtig, diese Autoritäten für das Thema zu nutzen . Auch nur um zu verstehen wie Sie Ihr eigenes einrichten würden. Denn alles, was Sie nicht in Betracht gezogen haben, haben sie bereits getan. All Zeros ist also eine der führenden Behörden für Benutzersicherheit, oder? Was ich hier sehe, ist, dass das zurückgesendete Token von unserer Anwendung verwendet wird , um anzuzeigen , dass Sie authentifiziert sind. Das Vorhandensein eines Tokens bedeutet also , dass Sie authentifiziert sind. dass der Inhalt dieses Tokens Ihren Namen enthalten würde , basierend auf dem, was Sie bei der Registrierung Ihrer E-Mail-Adresse angegeben haben, sogar ein Profilbild, wenn Sie es auf solche Dinge hochladen. Diese Behauptungen stammen also alle von den Tolkien, und sie sind alle Informationen, die zeigen, wer Sie sind, welchem Zweck Sie dienen, was Sie tun können und was nicht. So können sogar Rollen und ich selbst in diesem Toolkit zusammengefasst werden. Nein, das Autorisierte bedeutet wiederum, dass Sie diesen Endpunkt nur erreichen können, wenn Sie über ein Token verfügen. Das heißt, wenn ich versuchen würde, zum Login zu navigieren, ist das in Ordnung. Wenn ich versucht habe, zu anderen Teilen meines Sets zu navigieren , ist das in Ordnung. Wenn ich versucht habe, mit aktivierter Autorisierung hier zu navigieren , kann ich das nicht. Es wird mich zwingen, mich einzuloggen. Das Gleiche gilt für das Abmelden. Es zwingt mich, mich einzuloggen oder angemeldet zu sein, sodass ich mich abmelden kann, wenn ich nicht angemeldet bin. Sobald das Logo fertig ist, leiten wir sie auf die Startseite weiter . In Ordnung. Das Schild oben endet also in zwei Teilen. Wir haben die Sandalen asynchron, was wirklich bedeutet, dass der Kontext, in dem wir angemeldet sind, durch Null gesendet wird. Deshalb ist das das Authentifizierungsschema, das mit demselben alten verwendet wird. Es sieht sehr ähnlich aus wie die Herausforderung sehen, wo wir dasselbe Authentifizierungsschema verwenden, oder? Der nächste Supernode ist aus dem Cookie raus. Denn was passiert, ist, dass, wenn das Token von Null weitergegeben wird, es in einem Cookie lokal auf unserer Website gespeichert wird, oder? Dann wird das die etablierte Methode sein , mit der die Anwendung weiß, dass jemand authentifiziert wurde. Aus diesem Grund verwenden wir standardmäßig die Cookie-Authentifizierung. Wenn du dich also abmeldest, müssen wir dich als in zuweisen. Überlassen Sie asp.net Core jede Anmeldung bei Aesop für das Cookie-Authentifizierungsschema. In Ordnung, das ist also ziemlich was diese beiden Zeilen tun. Die Kombination oder das kombinierte Ergebnis ist jedoch , dass Sie kein gültiges Token mehr haben, eine gültige RBC-Sitzung haben und ein authentifizierter Benutzer sind und zum Anmeldeteil weitergeleitet werden Entschuldigung für die Indexseite. Wenn ich nun zur Dokumentation zurückkehre, wirst du sehen, dass wir jetzt am Ende sind. Es gibt kein Sprichwort: Okay, was kommt als Nächstes? Sie können also anfangen , sich Dinge wie das Hinzufügen einer rollenbasierten Autorisierung anzusehen. Sie werden also viele Beispiele haben, die Sie sich ansehen können , um herauszufinden, wie Sie sie in Ihre, in Ihre Anwendung für Node integrieren können . Oder wir wollen testen und sicherstellen, dass wir Benutzer zum Einloggen zwingen können. Ich werde also sagen, dass Sie für den Controller des Kurses autorisiert sein müssen, sagen wir, den Index zu erstellen. Wir haben die Details, aber ich werde eine Autorisierungskennzeichnung oder eine Anmerkung direkt über dem Erstellen platzieren . Sie müssen autorisiert sein. Und dann können wir anhand der Referenz kontrollieren, ob Punkte fehlen. Und in der nächsten Lektion werden wir das testen und sehen, wie es funktioniert. 36. Authentifizierung testen: In Ordnung, jetzt läuft meine Anwendung. Und was wir tun wollen, ist zu testen ob unsere Authentifizierung so funktioniert, wie wir es erwarten, und wie die gesamte Benutzererfahrung aussehen wird. So kann ich durch die Website navigieren. Ich meine, ich habe nur ein paar Orte gesperrt und ein Ort, an dem ich in einer früheren Lektion dafür gesorgt habe, dass das viel getan wird, war der Kurs Create Form Four. Wenn ich also auf Erstellen klicke, wird meine Website nicht verlassen. Das ist also die Domain, die mir gegeben wurde, oder? Das ist natürlich die Domain, wenn wir bezahlen und einen kostenpflichtigen Tarif bei osteo weekend anmelden , um diese Dinge anzupassen. Aber im Moment ist das in Ordnung. Dadurch kann ein Nutzer nun Ihre E-Mail-Adresse und Ihr Passwort angeben oder mit Google fortfahren. Sie können sich sogar anmelden. Lass mich sehen, wie es aussieht, wenn sie sich anmelden. Um sich anzumelden. Und noch einmal, all dies kann individuell angepasst werden. Sie können das Logo ändern, wir können das Anmeldeformular erweitern. Die meisten dieser Dinge sind jedoch mit der Bezahlung des Dienstes verbunden. Im Allgemeinen benötigen Sie jedoch nur eine E-Mail-Adresse und ein Passwort. Und noch einmal, es ist sehr praktisch, weil es die soziale Autorisierung oder soziale Authentifizierung hat die soziale Autorisierung oder , eine ziemlich große Dose. Oder wir können andere soziale Plattformen, Microsoft, LinkedIn, GitHub usw., alles in diesen Bildschirm einfügen. Und das können wir tun, ohne zu viele Codezeilen mehr zu schreiben. Es ist also sehr praktisch. Lassen Sie uns weitermachen und ich werde einen dieser Tests verwenden, E-Mail-Adressen, die ich habe. Ich sage einfach SEM. Sem und mein spezielles Passwort, Hier ist Wins, VP, essence W oder d one. Sie können hier sehen , dass die gesamte Validierung für mich erledigt wird. Ich kann auf Weiter klicken, und dann stellen sie sicher testen und prüfen, ob Sie der App die Zustimmung zum Zugriff auf Ihr Profil erteilen möchten . Ich sage ja. Und ich bekomme diese Ausnahme. Ich weiß, du kennst mich, ich werde die Ausnahmen nicht verstecken, weil es wichtig ist , dass wir das tun und verstehen, warum wir bestimmte Dinge bekommen. Was hier passiert, ist, dass es dieses Korrelationsfeld sagt. Und ich vermute nur, dass es hauptsächlich daran liegt, dass wir das HTTP-Protokoll verwenden. Https wird bevorzugt, wenn wir solche Dinge tun. In Ordnung? Was wir also tun werden, ist zu unserer Auth Zero-Konfiguration für up zurückzukehren . Und nur für den Fall, dass Sie sich nicht erinnern, wie Sie von Ihrem Getting Started Panel hierher gelangen . Sie können tatsächlich, naja, Sie können einfach zu Anwendungen gehen und dann hier zu Anwendungen gehen. Da haben wir's. Und dann wählst du dich aus. In Ordnung? Dann fügen wir die HTTPS-URLs zu unserem Login hinzu und rufen zurück. Ordnung, also die HTTPS-URL, wenn Sie zu Ihren Lungeneinstellungen zurückkehren, befindet sich unter dem HTTPS-Profil Sie finden die beiden URLs, Sie finden eine HTTPS-URL und Sie finden die HTTP-URL. Sie können also einfach beide kopieren und einfügen. Stellen Sie sicher, dass Sie Slash Call Buck eingeben. Und statt eines Semikolons setzen Sie ein Komma gemäß den Anweisungen direkt nach der Benutzerauthentifizierung, um nur eine der URLs zu verwenden. Und sie sehen, dass sie HTTPS bevorzugen. In Ordnung? Also werde ich beide angeben, aber wirklich und wahrhaftig, wir wollen, dass das HTTP S1 verwendet wird. Und das Gleiche gilt für das Logo. In Ordnung? Und denken Sie daran, sobald Sie diese Änderungen vorgenommen haben, speichern Sie die Änderungen, die Benachrichtigung würde ihm sagen, dass es etwa 30 Sekunden warten soll. Was ich tun werde, ist in unserem Dotnet, in unserem VS-Code, wir werden mit das HTTPS-Profil. Also ich denke , das haben wir vorhin gemacht, wo wir Dotnet Run gesagt haben und dann Bindestrich, Bindestrich sagen. Lass mich einfach den Bildschirm löschen , damit er etwas klarer wird. Wir sehen Dotnet Run, Hyphen, Startprofil. Ich weiß, dass wir HTTPS verwenden. Sobald wir das getan haben, drücken Sie die Eingabetaste. Jetzt können wir unsere Anwendung von beiden aus ausführen. Aber die Middleware , die sich in der program.cs befindet, wird sowieso immer die HTTPS-Umleitung erzwingen. Lassen Sie uns also weitermachen und denselben Test erneut mit HTTPS durchführen. Sie werden auch feststellen, dass Sie, obwohl Sie diesen Fehler haben, tatsächlich bereits authentifiziert sind . Wenn Sie versuchen, zu dieser Seite zurückzukehren, können Sie zu der Seite wechseln. Das heißt, du sprichst, ist anwesend. Und wenn Sie die Konsole oder das Terminalfenster beobachtet haben, werden Sie sehen, dass der Tolkien Buck kam und ganze OpenID-Handshake. All Zeros bietet also OpenID Connect-Dienste. Und das ist wie ein Handschlag zwischen Ihrer Website. Und dann ist das Endergebnis dieses Handshakes, dass Ihre Anwendung ein Token erhält und keine Knoten, sie ist authentifiziert. Leider haben wir die Abmelde-Schaltfläche noch nicht eingerichtet , sodass wir authentifiziert sind und keine Möglichkeit haben, uns zu authentifizieren. Also, was ich tun werde, ist diese URL zu nehmen und erneut zu testen Wir verwenden unser privates Fenster, also technisch gesehen kommen wir frisch rein, keine Authentifizierung hat stattgefunden. Wir gehen zu Kursen, wir können die Kurse sehen, die wir neu erstellen könnten. Und dann sind wir gezwungen, uns anzumelden oder anzumelden. Ich werde einfach die gleichen Kegel verwenden, die wir gerade admin bei SEM mit einem Passwort erstellt haben und auf Weiter klicken. Und siehe da, es gibt keinen Fehler und wir werden authentifiziert und zu unserem gesicherten pH-Wert weitergeleitet. Es ist also gut zu sehen, was schief gehen kann, und es zu verstehen denn OpenID Connect kann etwas Finesse erfordern , um sich daran zu gewöhnen. Aber da Dienste wie Auth Zero viele der auftretenden Komplikationen abstrahieren . Es ist ziemlich einfach, mit der Authentifizierung loszulegen. Jetzt müssen wir unsere Funktionalität beenden. Wir werden auf dieser Profilseite oder in einem kleinen Teil hier drüben , dass, wenn Sie angemeldet sind, also Ihre E-Mail-Adresse verwenden und eine Logo-Schaltfläche anzeigen. Und die E-Mail-Adresse geht zu der Profilseite, die wir eingerichtet haben. Das werden wir als Nächstes tun. 37. Benutzerbezogene Seiten einrichten: Hallo Leute. In dieser Lektion möchten wir einen anderen Balken ändern , damit wir unsere zusätzlichen Schaltflächen haben können. Also wollen wir hier eine Schaltfläche mit der Aufschrift Anmelden, Abmelden und eine , mit der wir sehen können , welcher Benutzer gerade angemeldet ist, oder? Lassen Sie uns also zu unserem Projekt zurückkehren. Und was ich tun werde, ist eine neue Teilansicht zu erstellen. Und das Coole an Partials ist, dass sie über mehrere Thesen geteilt werden können , die injiziert werden, oder? Also werden wir gemeinsam unser erstes Teilstück erstellen. Also werde ich mit der rechten Maustaste klicken und Unterstrich-Anmeldung, partielles Punkt-CSS-HTML erstellen . Und in dieser Datei werden wir so etwas Einfaches machen. Also alles, was ich hier habe, ist eine ungeordnete Liste mit einer Klassen-Navbar, oder? Also mit Bootstrap, wenn wir eine Navigationsleiste links und einen Abschnitt rechts haben wollen , und sie sehen ganz anders aus. Was passieren kann , ist, dass wir eine andere UL einrichten und ihr dann dieselbe Klasse geben können , navbar-nav. Aber natürlich mögen nicht alle anderen Klassen die Filme und das Grow und so, die die ursprünglichen Sets von Navbar-Elementen hatten. Dies würde es tatsächlich ermöglichen, es entlang dieser Navigationsleiste richtig auszurichten. In dieser neuen ungeordneten Liste werde ich also eine if-Anweisung haben. Ich überprüfe, ob die Benutzerpunktidentität, bei der es sich um einen authentifizierten Benutzer handelt, wie ein Superobjekt ist, das ein sogenanntes Claim-Prinzip darstellt. Asp.net Core-Anwendungen haben also das Konzept eines Benutzerprinzips oder eines Claims-Prinzips, das eine Kombination all dieser Behauptungen ist , die wir besprochen haben. Das Vorhandensein aller von ihnen kann kombiniert werden, um uns ein sauberes Sprint-IPL zu geben, und dann lehnt das Prinzip ab, dass für die verschiedenen Informationen aufgeschlüsselt werden kann . Hier sehen wir also die Person das Objekt ist , das Prinzip beansprucht. Hat es eine authentifizierte Person? Stellt es eine authentifizierte Person dar? Es ist immer präsent, aber ohne angebliche Entzündung wäre es wie ein leeres Objekt. Das würde jedoch bedeuten , dass die Person wahrscheinlich nicht authentifiziert ist , wenn wir keine Informationen haben. Wir können uns also auf diese if-Anweisung verlassen , da all dies während des Authentifizierungsablaufs eingerichtet wird , den wir bereits erlebt haben. Wenn die Person authentifiziert ist, möchte ich nach Objekten suchen. Der erste ist, und denken Sie natürlich daran, dass wir einen anderen Link sehen müssen , der zuerst das LAs-Nav-Element und dann die Klasse ist Nav-Link und Text-Bindestrich. Da wir eine schwarze Navigationsleiste verwenden, müssen wir den Bereich eigentlich nicht einmal angeben. Einfach wirklich kopiert und eingefügt, aber das ist in Ordnung. Wir werden sehen , dass wir zu Konto und Profil gehen . Und was wir zeigen, ist die Benutzeridentität, der Punktname. Dieser Name ist der Anspruch, von dem er stammt. Das Tool kann Frauen vor dem Anspruchsprinzip schützen, das bei unserer Authentifizierung eingeführt worden wäre. In Ordnung, das ist also eine nette, einfache Möglichkeit, den Benutzernamen zu erfahren. Nun, in diesem Fall verwenden Sie sie als dieselbe E-Mail-Adresse des authentifizierten Benutzers. Wir zeigen das also an und wenn es angeklickt wird, sollten wir zu seiner Profilseite gehen, die wir noch nicht erstellt haben. Dann haben wir den nächsten, nämlich den Logo-Button. Also, wenn die Person authentifiziert ist und wir ihr ermöglichen möchten , dass sie sich abmelden kann. Andernfalls fahren Sie fort und zeigen Sie eine Anmeldeschaltfläche an, die zu ihrem Cone-Controller und zur Anmeldeaktion führt. Und dann würden sie dadurch natürlich an den Authentifizierungsdienst eines Drittanbieters weitergeleitet . Jetzt, da wir diese teilweise Einrichtung für die Anmeldung haben, müssen wir sie nur noch zur Navigationsleiste im Layoutpunkt CSS, HTML hinzufügen . Css. Wir können hinzufügen, dass wir in dieser einen Zeile verwenden und das macht teilweise aus. So cool. Sie können diesen statischen Abschnitt der Websites erstellen, die statische, statische Ansicht zu stark und Sie können ihn einfach an einer beliebigen Stelle einfügen. Nur diese eine Zeile hier, wir sehen nur, dass ein teilweiser Name gleichbedeutend mit teilweiser Anmeldung ist. Diese Verpflichtung wird wissen, dass sie gehen und versichert nach jeder Datei mit diesem Namen suchen sollte , und dann wird es gerendert dieser Abschnitt genau dort. Beachten Sie, dass hier die ursprüngliche Navigationsleiste endet. Danach beginnen wir mit unserem Teilprojekt, in dem wir einen weiteren Navbar-Abschnitt definiert haben. Lassen Sie uns das überprüfen. So sieht die Anwendung also aus. Wir haben also alle vier ursprünglichen URLs. Ich weiß, dass wir uns auf der rechten Seite angemeldet haben. In Ordnung, das sieht gut aus. Wenn wir auf Anmelden klicken , werden diese hier angezeigt. Und dann können wir weitermachen und mit dem Benutzer authentifizieren , mit dem wir uns bereits angemeldet haben. Und dann nein, es wird mir angezeigt, dass ich als Administrator bei SCM angemeldet bin und ich mich abmelden kann, wenn ich auf Abmelden klicke Was macht das? Es loggt mich dort aus. Wir alle wissen es. Was wir tun müssen, ist diese Profilseite so zu konfigurieren , dass sie tatsächlich irgendwohin geht. Denn wenn ich auf diese URL klicke, erhalte ich denselben Fehler , den wir beim ersten Mal gesehen haben, als wir keine Ansicht hatten. Also lass uns weitermachen. Und konfiguriere das. Ordnung, also zurück in unserem Icon-Controller haben wir unsere Profiloption. Und was wir tun, ist, dass wir die Ansicht zurückgeben, die irgendwann existieren sollte irgendwann existieren mit einem neuen, was wir als anonymen Typ bezeichnen werden. Das ist also ein anonymer Typ oder ein anonymes Objekt. Es gibt keine wirkliche Möglichkeit festzustellen, welcher Datentyp gesendet wird. Sie können hier sehen, dass es nur ein, es ist nur anonym. Was ist ein? Jetzt schauen wir uns das Konzept eines Ansichtsmodells an , oder? Ich werde also damit beginnen, eine Klasse zu erstellen und wir haben bereits ein weiteres Konzept für ein Ansichtsmodell mit dem Error View-Modell Ich werde eine neue Datei erstellen. Ich nenne dieses Benutzerprofil-View-Modell. In einigen Benennungskonventionen würden die Leute einfach VM sagen und es ist eine neue Klassendatei. Also Punkt cs, wir beginnen mit unserem Namespace. Und das sind die MVC-Punktmodelle der Schulverwaltungs-App , oder? Semikolon. Dann haben wir eine öffentliche Klasse und wir nennen sie ein User Profile View Model. Nun wird diese Klasse die verschiedenen Datenpunkte haben , die wir zeigen wollen. Und das Coole an View-Modellen ist, dass sie wirklich dazu verwendet werden, zu kontrollieren, was wir auf dem Bildschirm zeigen . Dies ist ein leistungsstarkes Konzept, insbesondere wenn wir nicht mehr alle Felder unserer Datenklassen auf diesem Bildschirm anzeigen möchten , wir würden tatsächlich Ansichtsmodelle erstellen jede Ansicht spezifisch sind und dann habe ich eine Logik , die vom Ansichtsmodell in die Datenklasse konvertiert und umgekehrt. Ich werde in diesem Kurs nicht auf all das eingehen Sie können sich meinen Kurs ansehen, asp.net- und Entity Framework Core-Entwicklung abschließen, in dem ich Ihnen all diese Dynamiken und Abstraktionen dafür beibringe , wir wollen einfach loslegen und verstehen, wie wir mit minimalem Aufwand eine einfache App erstellen können, oder? Für dieses Benutzerprofilmodell definiere ich Eigenschaften, die wieder dem entsprechen, was ich vom Profil erwarte. Und lass mich das tatsächlich versuchen. Ich wollte versuchen, das System zu betrügen. Ich sage hier User Profile View Model. Ordnung, füge die fehlende Referenz hinzu. Und dann gibt es natürlich nichts davon. Also werde ich mir das ansehen. Ich kann nur den Generate-Variablennamen sehen, unseren Eigenschaftsnamen in der Klasse, in der ich mir wünschte, er wäre enthalten. wollte ich machen. Und dann lass uns gehen und den Kurs überprüfen. Und los geht's. So betrügt man, oder? Anstatt zu versuchen, sie alle manuell einzugeben, werde ich einfach die Situation ausnutzen , die sich ergibt. Also möchte ich ein neues Ansichtsmodell zurückgeben. Es ist also ein starker Typ. Jetzt weiß ich genau, dass der Datentyp zurückgegeben wird. Und dann sind das die Eigenschaften, die da drin sind. Sie waren vorher nicht da. Also habe ich Visual Studio Code erlaubt, sie für mich zu generieren. Ordnung, sobald das erledigt ist, werden Sie feststellen, dass sie auch mit diesen internen Annotationssätzen generiert werden , was bedeutet, dass dies von keinem anderen Ort außerhalb der Initialisierung festgelegt werden kann . was für mich in Ordnung ist. In Ordnung? An diesem Punkt werden wir dieses Ansichtsmodell zu dieser Ansicht zurückkehren. Diese Ansicht gibt es nicht und wir werden kein Gerüst bauen. Wir müssen das manuell machen. Gehen wir also zu den Ansichten über. Und das erste, was wir brauchen, ist ein Ordner, der unserem Controller zugeordnet ist, oder? Ansichten klicken also mit der rechten Maustaste, klicken Sie auf Neue Datei , und dann sehen wir leider nicht Neue Datei, Neuer Ordner, Ordner. Da haben wir's. Und dann nennen wir es einen Kegel , weil das der Name des Controllers ist. Dann können wir innerhalb eines Kegels, in diesem Ordner, jetzt eine neue Datei erstellen und ich nenne sie Profile Dot CSS HTML. Warum Profil? Weil das Profil wieder der Aktion zugeordnet werden muss , die als Profil bezeichnet wird. Also wir haben das durchgemacht, wir haben das mit wem gemacht und ungefähr schon. Das einzige ist jedoch, dass wir auch unseren eigenen Ordner erstellen . Nun zum Inhalt dieser Seite, ich werde nicht versuchen, kreativ zu werden. Ich werde nur auf die Probe zurückschauen. Wenn ich also zum All-Zero-Management-Dashboard zurückkehre, denken Sie daran, dass wir es zu Beginn hätten herunterladen können, während Sampler das Beispiel auf GitHub angesehen hat, oder? Jemand, der dich auf GitHub rettet, das wird das Projekt auf GitHub starten. Und wenn ich dann nach unten zu der Woche navigiere , beginnt ein großes Beispiel für Schrägstrich, Schrägstrich, Home-Slash-Profil , CSS-HTML. Wir werden uns die Ansicht ansehen , die sie im Beispiel verwendet haben. Ich denke, das ist gut genug, um loszulegen. In Ordnung? Also wir wollen dieses sexuelle, ich meine, du kannst das Ganze nehmen, also können wir einfach den gesamten Inhalt kopieren. Und dann müssen wir natürlich die Namespace-Referenz hier ändern , da sich das Benutzerprofilansichtsmodell in einem anderen Namespace befindet, aber dann kann alles andere gleich bleiben. Also, wenn diese Operation abgeschlossen ist, ist es das, was wir am Ende haben, oder? In dieser Profilpunkt-CSS-HTML-Datei habe ich also ein Modell und dann einen Namespace relativ zu dem, wo sich mein View-Modell tatsächlich befindet. Und dann habe ich denselben Titel, dann ist alles andere gleich. Wenn das alles erledigt ist, aktualisiere ich meine Bewerbung und sehe sie mir an und genau das erhalte ich. Okay, das ist Benutzerprofil-Admin bei SCM, das ist die E-Mail-Adresse. Und das wäre das Profilbild von Auth Zero kommt. Das meinen wir also mit Reinigungen. Diese Entzündung gab es einmal, aber jedes Mal, wenn sich der Benutzer authentifiziert, wird diese Entzündung in seinen Schadensinformationen enthalten sein . In Ordnung, jetzt können Sie also mit dem Herunterfahren verschiedener Teile Ihrer Anwendung experimentieren Herunterfahren verschiedener Teile , weil es nur um Sicherheit geht. Und es geht darum, wer was kann und warum. 38. Letzter Schliff: Ordnung Leute, also in dieser Lektion werden wir unsere Benutzeroberfläche ein wenig aufräumen . Und ich fange mit dem Layout an, um zu bezahlen. Also in unserem Layout, das sich im Shared, There we go befindet, möchte ich nicht, dass jemand, der nicht authentifiziert ist , einen dieser Links sieht. Zuallererst denke ich nicht, dass der Link zum Datenschutz mehr in der Navigationsleiste sein muss. würde ich wahrscheinlich eher sagen wollen. Es ist schon hier in der Fußzeile gemacht. Jemand hat es aus der oberen Navigationsleiste entfernt. Okay, und es wurde entfernt, dass ich dann nicht möchte , dass ein authentifizierter Benutzer den Bereich Kurse, Dozenten und Studentenverwaltung sehen kann . Ratet mal, was? Ich kann die IF-Anweisungen , die wir im Login-Abschnitt haben, hier verwenden. Ich kann sehen, ob Punkt der Benutzeridentität authentifiziert ist. Dann will ich diesen Abschnitt. Also füge ich einfach all diese LI-Tags in diese if-Anweisung ein. Das zeigt nur, wie einfach es ist, unsere Anzeige basierend auf dem authentifizierten Status der Person dynamisch zu gestalten Anzeige basierend auf dem authentifizierten Status der Person dynamisch . Wir können Menüoptionen ausblenden und sie je nachdem, ob diese Person angemeldet ist oder nicht, manipulieren . Und wir können auch weitermachen und einige unserer Controller sperren. Wenn wir zum Beispiel wirklich nicht wollen, dass es jemand sieht, sie aber trotzdem navigieren könnten wenn sie die URL genau dort wüssten, könnten sie trotzdem einen Seiten-Schrägstrich sagen . Kurse slash-Index und fahren Sie dorthin. Also wollen wir nicht nur das Ganze sperren, sorry für die Crew, es ist weiter unten , um alles hier zu sperren. Für den Controller des Kurses können wir einfach einen Autor angeben. Ich habe oben auf dem gesamten Controller angefangen. Nein, niemand kann hier in die Nähe kommen , wenn er nicht autorisiert ist. In Ordnung, also können wir das mit allen Controllern machen , für die wir diese Art von Blue-Ball-Beschränkung haben wollen. Also mache ich das für die Klassenverwaltung, und das kann ich für die Einschreibung tun. Und natürlich müssen wir hinzufügen , dass die Verwendung von Statements fehlt. Also lass mich zurück zum Unterricht gehen und das machen. Los geht's, wir können das Haus verlassen. Und dann möchten Sie manchmal sehr deutlich machen sehr deutlich , dass dieser spezielle Controller Anonymität zulassen kann. Es gibt hier also tatsächlich eine Anmerkung mit der Aufschrift Allow anonymous, was bedeutet, dass alles, was sich in diesem Controller befindet, oder wenn Sie es über eine Aktion stellen, bedeutet dies, dass jeder gehen Sie zu dieser bestimmten Adresse, ohne dass eine Genehmigung erforderlich ist. Das ist die Standardeinstellung, aber manchmal möchten Sie noch expliziter sein. Ordnung, also werden wir autorisieren und die Schüler, wir werden auch nein, es ist kein unbefugter Zugriff auf eine dieser Routen in diesen Controllern erlaubt . Und selbst dann, selbst wenn wir den gesamten Controller sperren, aber wir wollten, dass vielleicht nur einer zugänglich ist, könnten wir einfach darüber hinausgehen und sagen, Hallo, Anonym, ich liebe über dem Aktion das ist, und Anonymität zulassen. Diese Künstler sind also Dinge, die Sie tun können , um den Zugriff zu kontrollieren? Ich habe die zusätzlichen Links nicht eingefügt. du wahrscheinlich schon getan, also musst du das nicht tun. Aber ich habe den Kurs nicht besucht. Lassen Sie mich hier einen Blick auf die Grasbewirtschaftung werfen. Das ist für den Klassencontroller. In Ordnung. Und ich habe keine Anmeldungen eingegeben, und ich muss wahrscheinlich nicht einmal Anmeldungen direkt eingeben, weil wir einige benutzerdefinierte Methoden für die Registrierungstabellen schreiben werden , weil das irgendwie relativ zum Klassenmanagement. Ich denke also, dass das eine gute legale Option ist. Und wenn wir zurückkommen, überprüfen wir einfach , ob wir einen weiteren Meilenstein erreicht haben. 39. Zu GitHub hinzufügen: Okay Leute, jetzt, da wir einen anderen Muslim getroffen haben, lasst uns weitermachen und all unsere Änderungen vornehmen. Wir können sehen, dass Null und Benutzerschnittstelle hinzugefügt wurden. In Ordnung? Und dann können wir uns verpflichten und pushen. Und wir sehen uns im nächsten Abschnitt.