Kurse:News Site erstellen: Unterschied zwischen den Versionen

Aus ahrensburg.city
Zur Navigation springen Zur Suche springen
// via Wikitext Extension for VSCode
// via Wikitext Extension for VSCode
Zeile 12: Zeile 12:
</pre>
</pre>


Wir müssen jetzt eine Datenbank einrichten:   
Jetzt müssen wir eine Datenbank einrichten:   
<pre>
<pre>
<!-- Installiere das Entity Framework Core CLI-Tool -->
<!-- Installiere das Entity Framework Core CLI-Tool -->
Zeile 34: Zeile 34:
</pre>
</pre>


Diese Tools werden benötigt, um automatisch Code für Controller, Views und andere Komponenten zu generieren. Das erleichtert die Entwicklung und spart Zeit, besonders wenn du die Benutzeroberfläche (z.B. Formulare für Benutzerverwaltung) anpassen oder übersetzen möchtest.
Diese Tools werden benötigt, um automatisch Code für Controller, Views und andere Komponenten zu generieren. Das erleichtert die Entwicklung und spart Zeit, besonders wenn du die Benutzeroberfläche (z.B. Formulare für die Benutzerverwaltung) anpassen oder übersetzen möchtest.
Um die Login-Seite für die Benutzeranmeldung zu generieren und anschließend ins Deutsche zu übersetzen, führe folgenden Befehl aus:
Um die Login-Seite für die Benutzeranmeldung zu generieren und anschließend ins Deutsche zu übersetzen, führe folgenden Befehl aus:


Zeile 43: Zeile 43:
Dadurch wird die Datei `Login.cshtml` im Verzeichnis `Areas/Identity/Pages/Account` erstellt.   
Dadurch wird die Datei `Login.cshtml` im Verzeichnis `Areas/Identity/Pages/Account` erstellt.   
Öffne diese Datei und passe die Texte an, um sie ins Deutsche zu übersetzen, z.B.:
Öffne diese Datei und passe die Texte an, um sie ins Deutsche zu übersetzen, z.B.:
<pre>
dotnet aspnet-codegenerator identity -dc ApplicationDbContext --files "Account.Register"
</pre>
Dadurch wird die Datei `Register.cshtml` im Verzeichnis `Areas/Identity/Pages/Account` erstellt. 
Öffne diese Datei und passe die Texte an, um sie ins Deutsche zu übersetzen, z.B.:
Gehe zu Views/Shared/_Layout.cshtml und Views/Shared/_LoginPartial.cshtml, um diese ins Deutsche zu übersetzen.
== Modell für News-Artikel erstellen ==
Um ein Modell für News-Artikel zu erstellen, füge im Projektordner `Models` eine neue Datei namens `Artikel.cs` hinzu mit folgendem Inhalt:
<pre>
using System.ComponentModel.DataAnnotations;
namespace News.Models
{
    public class Artikel
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "Der Titel ist erforderlich.")]
        [StringLength(200, ErrorMessage = "Der Titel darf maximal 200 Zeichen lang sein.")]
        [RegularExpression(@"^(?!.*(<|>|script|iframe|object|embed|form|input|button|link|style|svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$", ErrorMessage = "Der Titel darf keinen HTML-, JavaScript- oder SQL-Code enthalten.")]
        public string Titel { get; set; }
        [Required(ErrorMessage = "Der Inhalt ist erforderlich.")]
        [DataType(DataType.MultilineText)]
        [RegularExpression(@"^(?!.*(<script|<iframe|<object|<embed|<form|<input|<button|<link|<style|<svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$",
            ErrorMessage = "Der Inhalt darf keinen JavaScript-Code, keine SQL-Befehle und keine gefährlichen HTML-Tags enthalten.")]
        public string Inhalt { get; set; }
        [DataType(DataType.DateTime)]
        public DateTime VeröffentlichtAm { get; set; }
        [StringLength(100, ErrorMessage = "Der Autor darf maximal 100 Zeichen lang sein.")]
        [RegularExpression(@"^(?!.*(<|>|script|iframe|object|embed|form|input|button|link|style|svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$", ErrorMessage = "Der Autor darf keinen HTML-, JavaScript- oder SQL-Code enthalten.")]
        public string Autor { get; set; }
    }
}
</pre>

Version vom 2. Juli 2025, 13:57 Uhr

Um ein neues News-Projekt mit ASP.NET Core MVC und individueller Authentifizierung zu erstellen, führe folgenden Befehl in der Kommandozeile aus:

dotnet new mvc --auth Individual -n News

Dadurch wird ein neues ASP.NET Core MVC-Projekt mit individueller Benutzer-Authentifizierung im Ordner `News` erstellt. Wechsle anschließend in das Projektverzeichnis:

cd News
code .

Jetzt müssen wir eine Datenbank einrichten:

<!-- Installiere das Entity Framework Core CLI-Tool -->
dotnet tool install --global dotnet-ef

Nun erstellen wir die SQLite-Datenbank und führen die Migrationen aus:

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet ef database update

Dadurch wird die SQLite-Datenbank entsprechend der aktuellen Migrationen erstellt.

Jetzt installieren wir das Tool `dotnet aspnet-codegenerator`, das für die Gerüstgenerierung (Scaffolding) benötigt wird:

dotnet tool install --global dotnet-aspnet-codegenerator
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design

Diese Tools werden benötigt, um automatisch Code für Controller, Views und andere Komponenten zu generieren. Das erleichtert die Entwicklung und spart Zeit, besonders wenn du die Benutzeroberfläche (z.B. Formulare für die Benutzerverwaltung) anpassen oder übersetzen möchtest. Um die Login-Seite für die Benutzeranmeldung zu generieren und anschließend ins Deutsche zu übersetzen, führe folgenden Befehl aus:

dotnet aspnet-codegenerator identity -dc ApplicationDbContext --files "Account.Login"

Dadurch wird die Datei `Login.cshtml` im Verzeichnis `Areas/Identity/Pages/Account` erstellt. Öffne diese Datei und passe die Texte an, um sie ins Deutsche zu übersetzen, z.B.:

dotnet aspnet-codegenerator identity -dc ApplicationDbContext --files "Account.Register"

Dadurch wird die Datei `Register.cshtml` im Verzeichnis `Areas/Identity/Pages/Account` erstellt. Öffne diese Datei und passe die Texte an, um sie ins Deutsche zu übersetzen, z.B.:

Gehe zu Views/Shared/_Layout.cshtml und Views/Shared/_LoginPartial.cshtml, um diese ins Deutsche zu übersetzen.

Modell für News-Artikel erstellen

Um ein Modell für News-Artikel zu erstellen, füge im Projektordner `Models` eine neue Datei namens `Artikel.cs` hinzu mit folgendem Inhalt:

using System.ComponentModel.DataAnnotations;

namespace News.Models
{
    public class Artikel
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "Der Titel ist erforderlich.")]
        [StringLength(200, ErrorMessage = "Der Titel darf maximal 200 Zeichen lang sein.")]
        [RegularExpression(@"^(?!.*(<|>|script|iframe|object|embed|form|input|button|link|style|svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$", ErrorMessage = "Der Titel darf keinen HTML-, JavaScript- oder SQL-Code enthalten.")]
        public string Titel { get; set; }

        [Required(ErrorMessage = "Der Inhalt ist erforderlich.")]
        [DataType(DataType.MultilineText)]
        [RegularExpression(@"^(?!.*(<script|<iframe|<object|<embed|<form|<input|<button|<link|<style|<svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$", 
            ErrorMessage = "Der Inhalt darf keinen JavaScript-Code, keine SQL-Befehle und keine gefährlichen HTML-Tags enthalten.")]
        public string Inhalt { get; set; }

        [DataType(DataType.DateTime)]
        public DateTime VeröffentlichtAm { get; set; }

        [StringLength(100, ErrorMessage = "Der Autor darf maximal 100 Zeichen lang sein.")]
        [RegularExpression(@"^(?!.*(<|>|script|iframe|object|embed|form|input|button|link|style|svg|on\w+=|javascript:|data:|SELECT |INSERT |UPDATE |DELETE )).*$", ErrorMessage = "Der Autor darf keinen HTML-, JavaScript- oder SQL-Code enthalten.")]
        public string Autor { get; set; }
    }
}