Arbeitsschritte/ASP.NET Core MVC/CMS/Arbeitsschritte: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
// via Wikitext Extension for VSCode |
||
| (12 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 3: | Zeile 3: | ||
==Eine neue .slnx Solution erstellen== | ==Eine neue .slnx Solution erstellen== | ||
Eine Solution (.slnx) ist eine Projektmappe in Visual Studio Code, die mehrere Projekte und deren Abhängigkeiten zusammenfasst. Sie dient als Container für die Organisation, Verwaltung und das Builden von Softwareprojekten. | |||
<pre> | <pre> | ||
mkdir MeinCMS | mkdir MeinCMS | ||
| Zeile 10: | Zeile 10: | ||
</pre> | </pre> | ||
==Projekte hinzufügen== | ==Projekte hinzufügen== | ||
===Projekt erstellen=== | |||
<pre> | |||
dotnet new mvc --auth Individual -o mvc | |||
</pre> | |||
===Projekt zur .slnx hinzufügen=== | |||
<pre> | |||
dotnet sln MeinCms.slnx add mvc/mvc.csproj | |||
</pre> | |||
===Projekt zu Services anlegen=== | |||
<pre> | |||
dotnet new classlib -o Services | |||
dotnet sln MeinCms.slnx add Services/Services.csproj | |||
dotnet add mvc/mvc.csproj reference Services/Services.csproj | |||
</pre> | |||
===.gitignore Datei erstellen=== | |||
<pre> | |||
nano .gitignore | |||
</pre> | |||
Geben Sie Folgendes ein | |||
<pre> | |||
mvc/bin | |||
mvc/obj | |||
Services/bin | |||
Services/obj | |||
mvc/app.app | |||
mvc/appsettings.Development.json | |||
mvc/appsettings.json | |||
publish/ | |||
</pre> | |||
==Konsole== | |||
Geben Sie Folgendes in die Konsole ein | |||
<pre> | |||
cp mvc/appsettings.Development.json mvc/_appsettings.Development.json | |||
cp mvc/appsettings.json mvc/_appsettings.json | |||
</pre> | |||
==Starten Sie Visual Studio Code== | |||
Starten Sie Visual Studio Code und gehen Sie mit der Maus auf die rechte Seite bei Program.cs. | |||
Löschen Sie die folgende Zeile: | |||
<pre> | |||
app.MapControllerRoute( | |||
name: "default", | |||
pattern: "{controller=Home}/{action=Index}/{id?}") | |||
.WithStaticAssets(); | |||
</pre> | |||
Und ergänzen Sie die Zeile, die Sie gelöscht haben | |||
<pre> | |||
app.MapControllerRoute( | |||
name: "default", | |||
pattern: "{*slug}", | |||
defaults: new { controller = "Page", action = "Index" }) | |||
.WithStaticAssets(); | |||
</pre> | |||
==Datenbank erstellen== | |||
Um eine PostgreSQL-Datenbank für Ihr Projekt zu erstellen, führen Sie folgende Befehle in der Konsole aus: | |||
<pre> | |||
sudo -u postgres -i | |||
createdb -E UTF8 -O thorsten mvc | |||
psql -d mvc -c "GRANT ALL PRIVILEGES ON DATABASE mvc TO thorsten | |||
exit | |||
</pre> | |||
Die beiden Befehle installieren NuGet-Pakete, die für die Verwendung von Entity Framework Core mit PostgreSQL benötigt werden: | |||
<pre> | |||
cd mvc | |||
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL | |||
dotnet add package Microsoft.EntityFrameworkCore.Design | |||
</pre> | |||
Passen Sie anschließend die Verbindungszeichenfolge in Ihrer <code>appsettings.json</code> an: | |||
Löschen Sie folgende Zeile | |||
<pre> | |||
"ConnectionStrings": { | |||
"DefaultConnection": "DataSource=app.db;Cache=Shared" | |||
}, | |||
</pre> | |||
Wo Sie die Zeile gelöscht haben, ersetzen Sie sie durch folgende Zeile | |||
<pre> | |||
"ConnectionStrings": { | |||
"DefaultConnection": "Host=localhost;Database=meincmsdb;Username=meincmsuser;Password=IhrPasswort" | |||
}, | |||
</pre> | |||
Gehen Sie zu Program.cs und löschen Sie die folgende Zeile | |||
<pre> | |||
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); | |||
builder.Services.AddDbContext<ApplicationDbContext>(options => | |||
options.UseSqlite(connectionString)); | |||
</pre> | |||
Ersetzen Sie die folgende Zeile | |||
<pre> | |||
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found."); | |||
builder.Services.AddDbContext<ApplicationDbContext>(options => | |||
options.UseNpgsql(connectionString)); | |||
</pre> | |||
</pre> | |||
Ersetzen Sie die Zeile | |||
<pre> | |||
builder.Services.AddDbContext<ApplicationDbContext>(options => | |||
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection"))); | |||
</pre> | |||
== Entwicklung Rechner == | |||
'''Achtung: Diese Befehle und Einstellungen sind ausschließlich für Entwicklungsumgebungen gedacht und sollten nicht auf Produktionsservern verwendet werden.''' | |||
<pre> | |||
dotnet user-secrets init | |||
dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Host=localhost;Database=MeineDatenbank;Username=postgres;Password=GEHEIMES_PASSWORT" | |||
</pre> | |||
==Datenbank Migration== | |||
<pre> | |||
dotnet ef migrations add thorsten | |||
dotnet ef database update | |||
</pre> | |||
==Identity hinzufügen== | |||
Um ASP.NET Core Identity zu Ihrem Projekt hinzuzufügen, installieren Sie zunächst das erforderliche NuGet-Paket für die Codegenerierung und führen dann den Identity-Scaffolding-Befehl aus. Dadurch werden die benötigten Dateien und Konfigurationen für die Benutzerverwaltung (Registrierung, Anmeldung, Rollen usw.) generiert. | |||
Führen Sie dazu folgende Befehle in der Konsole aus: | |||
<pre> | |||
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design | |||
dotnet aspnet-codegenerator identity -dc ApplicationDbContext | |||
</pre> | |||
==Test-Controller erstellen== | |||
Um zu testen, ob alles funktioniert, erstellen Sie einen Test-Controller: | |||
Datei: /Controllers/PageController | |||
<pre> | |||
using Microsoft.AspNetCore.Mvc; | |||
namespace mvc.Controllers | |||
{ | |||
public class PageController : Controller | |||
{ | |||
// GET: PageController | |||
public ActionResult Index(string slute) | |||
{ | |||
ViewBag.slute = slute; | |||
return View(); | |||
} | |||
} | |||
} | |||
</pre> | |||
==Test-Views erstellen== | |||
Jetzt testen wir die View, sonst läuft der Test im Browser nicht. | |||
Datei: /Views/Page/Index.cshtml | |||
<pre> | |||
<h1>@ViewBag.slute</h1> | |||
</pre> | |||
Ich habe heute die Zeile in Program.cs gelöscht, weil sie schlecht wartbar war. | |||
<pre> | |||
app.MapControllerRoute( | |||
name: "default", | |||
pattern: "{*slug}", | |||
defaults: new { controller = "Page", action = "Index" }) | |||
.WithStaticAssets(); | |||
</pre> | |||
Zeile hinzufügen: | |||
<pre> | |||
app.MapControllers() | |||
.WithStaticAssets(); | |||
</pre> | |||
---- | ---- | ||
''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).'' | ''Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).'' | ||
Aktuelle Version vom 15. Februar 2026, 01:45 Uhr
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).
Eine neue .slnx Solution erstellen
Eine Solution (.slnx) ist eine Projektmappe in Visual Studio Code, die mehrere Projekte und deren Abhängigkeiten zusammenfasst. Sie dient als Container für die Organisation, Verwaltung und das Builden von Softwareprojekten.
mkdir MeinCMS cd MeinCMS echo '<Solution />' > MeinCms.slnx
Projekte hinzufügen
Projekt erstellen
dotnet new mvc --auth Individual -o mvc
Projekt zur .slnx hinzufügen
dotnet sln MeinCms.slnx add mvc/mvc.csproj
Projekt zu Services anlegen
dotnet new classlib -o Services dotnet sln MeinCms.slnx add Services/Services.csproj dotnet add mvc/mvc.csproj reference Services/Services.csproj
.gitignore Datei erstellen
nano .gitignore
Geben Sie Folgendes ein
mvc/bin mvc/obj Services/bin Services/obj mvc/app.app mvc/appsettings.Development.json mvc/appsettings.json publish/
Konsole
Geben Sie Folgendes in die Konsole ein
cp mvc/appsettings.Development.json mvc/_appsettings.Development.json cp mvc/appsettings.json mvc/_appsettings.json
Starten Sie Visual Studio Code
Starten Sie Visual Studio Code und gehen Sie mit der Maus auf die rechte Seite bei Program.cs. Löschen Sie die folgende Zeile:
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}")
.WithStaticAssets();
Und ergänzen Sie die Zeile, die Sie gelöscht haben
app.MapControllerRoute(
name: "default",
pattern: "{*slug}",
defaults: new { controller = "Page", action = "Index" })
.WithStaticAssets();
Datenbank erstellen
Um eine PostgreSQL-Datenbank für Ihr Projekt zu erstellen, führen Sie folgende Befehle in der Konsole aus:
sudo -u postgres -i createdb -E UTF8 -O thorsten mvc psql -d mvc -c "GRANT ALL PRIVILEGES ON DATABASE mvc TO thorsten exit
Die beiden Befehle installieren NuGet-Pakete, die für die Verwendung von Entity Framework Core mit PostgreSQL benötigt werden:
cd mvc dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL dotnet add package Microsoft.EntityFrameworkCore.Design
Passen Sie anschließend die Verbindungszeichenfolge in Ihrer appsettings.json an:
Löschen Sie folgende Zeile
"ConnectionStrings": {
"DefaultConnection": "DataSource=app.db;Cache=Shared"
},
Wo Sie die Zeile gelöscht haben, ersetzen Sie sie durch folgende Zeile
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Database=meincmsdb;Username=meincmsuser;Password=IhrPasswort"
},
Gehen Sie zu Program.cs und löschen Sie die folgende Zeile
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlite(connectionString));
Ersetzen Sie die folgende Zeile
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(connectionString));
Ersetzen Sie die Zeile
builder.Services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
Entwicklung Rechner
Achtung: Diese Befehle und Einstellungen sind ausschließlich für Entwicklungsumgebungen gedacht und sollten nicht auf Produktionsservern verwendet werden.
dotnet user-secrets init dotnet user-secrets set "ConnectionStrings:DefaultConnection" "Host=localhost;Database=MeineDatenbank;Username=postgres;Password=GEHEIMES_PASSWORT"
Datenbank Migration
dotnet ef migrations add thorsten dotnet ef database update
Identity hinzufügen
Um ASP.NET Core Identity zu Ihrem Projekt hinzuzufügen, installieren Sie zunächst das erforderliche NuGet-Paket für die Codegenerierung und führen dann den Identity-Scaffolding-Befehl aus. Dadurch werden die benötigten Dateien und Konfigurationen für die Benutzerverwaltung (Registrierung, Anmeldung, Rollen usw.) generiert.
Führen Sie dazu folgende Befehle in der Konsole aus:
dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design dotnet aspnet-codegenerator identity -dc ApplicationDbContext
Test-Controller erstellen
Um zu testen, ob alles funktioniert, erstellen Sie einen Test-Controller: Datei: /Controllers/PageController
using Microsoft.AspNetCore.Mvc;
namespace mvc.Controllers
{
public class PageController : Controller
{
// GET: PageController
public ActionResult Index(string slute)
{
ViewBag.slute = slute;
return View();
}
}
}
Test-Views erstellen
Jetzt testen wir die View, sonst läuft der Test im Browser nicht. Datei: /Views/Page/Index.cshtml
<h1>@ViewBag.slute</h1>
Ich habe heute die Zeile in Program.cs gelöscht, weil sie schlecht wartbar war.
app.MapControllerRoute(
name: "default",
pattern: "{*slug}",
defaults: new { controller = "Page", action = "Index" })
.WithStaticAssets();
Zeile hinzufügen:
app.MapControllers()
.WithStaticAssets();
Hinweis: Diese Inhalte wurden mit Unterstützung von Künstlicher Intelligenz erstellt und redaktionell überprüft (Transparenzhinweis gemäß Art. 50 EU AI Act).