Arbeitsschritte/ASP.NET Core MVC/CMS/Arbeitsschritte: Unterschied zwischen den Versionen

Aus Dokument
Zur Navigation springen Zur Suche springen
imported>Import
Version 167
// via Wikitext Extension for VSCode
 
Zeile 2: Zeile 2:
----
----


== 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.
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
cd MeinCMS
cd MeinCMS
echo '&lt;Solution /&gt;' &gt; MeinCms.slnx</pre>
echo '<Solution />' > MeinCms.slnx
== Projekte hinzufügen ==
</pre>
 
==Projekte hinzufügen==
=== Projekt erstellen ===
===Projekt erstellen===
 
<pre>
<pre>dotnet new mvc --auth Individual -o mvc</pre>
dotnet new mvc --auth Individual -o mvc
=== Projekt zur .slnx hinzufügen ===
</pre>
 
===Projekt zur .slnx hinzufügen===
<pre>dotnet sln MeinCms.slnx add mvc/mvc.csproj</pre>
<pre>
=== Projekt zu Services anlegen ===
dotnet sln MeinCms.slnx add mvc/mvc.csproj
 
</pre>
<pre>dotnet new classlib -o Services
===Projekt zu Services anlegen===
<pre>
dotnet new classlib -o Services
dotnet sln MeinCms.slnx add Services/Services.csproj
dotnet sln MeinCms.slnx add Services/Services.csproj
dotnet add mvc/mvc.csproj reference Services/Services.csproj</pre>
dotnet add mvc/mvc.csproj reference Services/Services.csproj
=== .gitignore Datei erstellen ===
</pre>
 
===.gitignore Datei erstellen===
<pre>nano .gitignore</pre>
<pre>
nano .gitignore
</pre>
Geben Sie Folgendes ein
Geben Sie Folgendes ein
 
<pre>
<pre>mvc/bin
mvc/bin
mvc/obj
mvc/obj
Services/bin
Services/bin
Zeile 34: Zeile 37:
mvc/appsettings.Development.json
mvc/appsettings.Development.json
mvc/appsettings.json
mvc/appsettings.json
publish/</pre>
publish/
== Konsole ==
 
</pre>
 
==Konsole==


Geben Sie Folgendes in die Konsole ein
Geben Sie Folgendes in die Konsole ein


<pre>cp mvc/appsettings.Development.json mvc/_appsettings.Development.json
<pre>
cp mvc/appsettings.json mvc/_appsettings.json</pre>
cp mvc/appsettings.Development.json mvc/_appsettings.Development.json
== Starten Sie Visual Studio Code ==
cp mvc/appsettings.json mvc/_appsettings.json


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>


<pre>app.MapControllerRoute(
==Starten Sie Visual Studio Code==
     name: &quot;default&quot;,
Starten Sie Visual Studio Code und gehen Sie mit der Maus auf die rechte Seite bei Program.cs.
     pattern: &quot;{controller=Home}/{action=Index}/{id?}&quot;)
Löschen Sie die folgende Zeile:
     .WithStaticAssets();</pre>
<pre>
app.MapControllerRoute(
     name: "default",
     pattern: "{controller=Home}/{action=Index}/{id?}")
     .WithStaticAssets();
</pre>
Und ergänzen Sie die Zeile, die Sie gelöscht haben
Und ergänzen Sie die Zeile, die Sie gelöscht haben
<pre>
app.MapControllerRoute(


<pre>app.MapControllerRoute(
  name: "default",
    pattern: "{*slug}",
    defaults: new { controller = "Page", action = "Index" })
  .WithStaticAssets();


  name: &quot;default&quot;,
</pre>
    pattern: &quot;{*slug}&quot;,
    defaults: new { controller = &quot;Page&quot;, action = &quot;Index&quot; })
  .WithStaticAssets();</pre>
== Datenbank erstellen ==


==Datenbank erstellen==
Um eine PostgreSQL-Datenbank für Ihr Projekt zu erstellen, führen Sie folgende Befehle in der Konsole aus:
Um eine PostgreSQL-Datenbank für Ihr Projekt zu erstellen, führen Sie folgende Befehle in der Konsole aus:


<pre>sudo -u postgres -i
<pre>
sudo -u postgres -i
createdb -E UTF8 -O thorsten mvc
createdb -E UTF8 -O thorsten mvc
psql -d mvc -c &quot;GRANT ALL PRIVILEGES ON DATABASE mvc TO thorsten
psql -d mvc -c "GRANT ALL PRIVILEGES ON DATABASE mvc TO thorsten


exit</pre>
exit
</pre>
Die beiden Befehle installieren NuGet-Pakete, die für die Verwendung von Entity Framework Core mit PostgreSQL benötigt werden:
Die beiden Befehle installieren NuGet-Pakete, die für die Verwendung von Entity Framework Core mit PostgreSQL benötigt werden:
 
<pre>
<pre>cd mvc
cd mvc
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
dotnet add package Microsoft.EntityFrameworkCore.Design</pre>
dotnet add package Microsoft.EntityFrameworkCore.Design
Passen Sie anschließend die Verbindungszeichenfolge in Ihrer <code>appsettings.json</code> an: Löschen Sie folgende Zeile
</pre>


<pre> &quot;ConnectionStrings&quot;: {
Passen Sie anschließend die Verbindungszeichenfolge in Ihrer <code>appsettings.json</code> an:
     &quot;DefaultConnection&quot;: &quot;DataSource=app.db;Cache=Shared&quot;
Löschen Sie folgende Zeile
   },</pre>
<pre>
"ConnectionStrings": {
     "DefaultConnection": "DataSource=app.db;Cache=Shared"
   },
</pre>
Wo Sie die Zeile gelöscht haben, ersetzen Sie sie durch folgende Zeile
Wo Sie die Zeile gelöscht haben, ersetzen Sie sie durch folgende Zeile
 
<pre>
<pre>&quot;ConnectionStrings&quot;: {
"ConnectionStrings": {
     &quot;DefaultConnection&quot;: &quot;Host=localhost;Database=meincmsdb;Username=meincmsuser;Password=IhrPasswort&quot;
     "DefaultConnection": "Host=localhost;Database=meincmsdb;Username=meincmsuser;Password=IhrPasswort"
},</pre>
},
</pre>
Gehen Sie zu Program.cs und löschen Sie die folgende Zeile
Gehen Sie zu Program.cs und löschen Sie die folgende Zeile
 
<pre>
<pre>var connectionString = builder.Configuration.GetConnectionString(&quot;DefaultConnection&quot;) ?? throw new InvalidOperationException(&quot;Connection string 'DefaultConnection' not found.&quot;);
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection") ?? throw new InvalidOperationException("Connection string 'DefaultConnection' not found.");
builder.Services.AddDbContext&lt;ApplicationDbContext&gt;(options =&gt;
builder.Services.AddDbContext<ApplicationDbContext>(options =>
     options.UseSqlite(connectionString));
     options.UseSqlite(connectionString));
     </pre>
     </pre>
<code>   Ersetzen Sie die folgende Zeile </code>


<pre>var connectionString = builder.Configuration.GetConnectionString(&quot;DefaultConnection&quot;) ?? throw new InvalidOperationException(&quot;Connection string 'DefaultConnection' not found.&quot;);
    Ersetzen Sie die folgende Zeile
builder.Services.AddDbContext&lt;ApplicationDbContext&gt;(options =&gt;
<pre>
     options.UseNpgsql(connectionString));</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>
</pre>
Ersetzen Sie die Zeile
Ersetzen Sie die Zeile
<pre>
builder.Services.AddDbContext<ApplicationDbContext>(options =>
    options.UseNpgsql(builder.Configuration.GetConnectionString("DefaultConnection")));
</pre>


<pre>builder.Services.AddDbContext&lt;ApplicationDbContext&gt;(options =&gt;
    options.UseNpgsql(builder.Configuration.GetConnectionString(&quot;DefaultConnection&quot;)));</pre>
== Entwicklung Rechner ==
== Entwicklung Rechner ==
'''Achtung: Diese Befehle und Einstellungen sind ausschließlich für Entwicklungsumgebungen gedacht und sollten nicht auf Produktionsservern verwendet werden.'''
'''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>


<pre>dotnet user-secrets init
==Datenbank Migration==
dotnet user-secrets set &quot;ConnectionStrings:DefaultConnection&quot; &quot;Host=localhost;Database=MeineDatenbank;Username=postgres;Password=GEHEIMES_PASSWORT&quot;</pre>
<pre>
== Datenbank Migration ==
dotnet ef migrations add thorsten
 
dotnet ef database update
<pre>dotnet ef migrations add thorsten
</pre>
dotnet ef database update</pre>
==Identity hinzufügen==
== 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.
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:
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>


<pre>dotnet add package Microsoft.VisualStudio.Web.CodeGeneration.Design
==Test-Controller erstellen==
dotnet aspnet-codegenerator identity -dc ApplicationDbContext</pre>
Um zu testen, ob alles funktioniert, erstellen Sie einen Test-Controller:
== Test-Controller erstellen ==
Datei: /Controllers/PageController
 
<pre>
Um zu testen, ob alles funktioniert, erstellen Sie einen Test-Controller: Datei: /Controllers/PageController
using Microsoft.AspNetCore.Mvc;
 
<pre>using Microsoft.AspNetCore.Mvc;


namespace mvc.Controllers
namespace mvc.Controllers
Zeile 134: Zeile 165:


     }
     }
}</pre>
}
== Test-Views erstellen ==
 
</pre>
 
==Test-Views erstellen==
Jetzt testen wir die View, sonst läuft der Test im Browser nicht.
Datei: /Views/Page/Index.cshtml
<pre>


Jetzt testen wir die View, sonst läuft der Test im Browser nicht. Datei: /Views/Page/Index.cshtml
<h1>@ViewBag.slute</h1>
 
</pre>


<pre>&lt;h1&gt;@ViewBag.slute&lt;/h1&gt;</pre>
Ich habe heute die Zeile in Program.cs gelöscht, weil sie schlecht wartbar war.
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>app.MapControllerRoute(
</pre>


    name: &quot;default&quot;,
        pattern: &quot;{*slug}&quot;,
        defaults: new { controller = &quot;Page&quot;, action = &quot;Index&quot; })
    .WithStaticAssets();</pre>
Zeile hinzufügen:
Zeile hinzufügen:


<pre>app.MapControllers()
<pre>
     .WithStaticAssets();</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).