Kurse:Grud Operatoren: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Die Seite wurde neu angelegt: „== Controller: Lesen (Index) & Erstellen (Create) == === Beispiel: PersonenController.cs === <syntaxhighlight lang="csharp"> // Index (Read) public IActionResult Index(string searchBy, string searchString, string sortBy, string sortOrder) { var personen = _personService.GetFilteredPersons(searchBy, searchString, sortBy, sortOrder); return View(personen); } // Create (GET) public IActionResult Create() { return View(); } // Create (POST) [Htt…“ |
Keine Bearbeitungszusammenfassung |
||
| (4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 39: | Zeile 39: | ||
== View: Index & Create == | == View: Index & Create == | ||
=== Beispiel: Index.cshtml (Lesen) === | === Beispiel: Index.cshtml (Lesen) === | ||
<syntaxhighlight lang="html | <syntaxhighlight lang="html"> | ||
@model IEnumerable<PersonResponse> | @model IEnumerable<PersonResponse> | ||
| Zeile 75: | Zeile 75: | ||
=== Beispiel: Create.cshtml (Erstellen) === | === Beispiel: Create.cshtml (Erstellen) === | ||
<syntaxhighlight lang="html | <syntaxhighlight lang="html"> | ||
@model PersonAddRequest | @model PersonAddRequest | ||
Aktuelle Version vom 25. Juni 2025, 11:05 Uhr
Controller: Lesen (Index) & Erstellen (Create)
Beispiel: PersonenController.cs
// Index (Read)
public IActionResult Index(string searchBy, string searchString, string sortBy, string sortOrder)
{
var personen = _personService.GetFilteredPersons(searchBy, searchString, sortBy, sortOrder);
return View(personen);
}
// Create (GET)
public IActionResult Create()
{
return View();
}
// Create (POST)
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(PersonAddRequest model)
{
if (ModelState.IsValid)
{
_personService.AddPerson(model);
return RedirectToAction("Index");
}
return View(model);
}
Hinweis: _personService ist eine Service-Klasse, die die Geschäftslogik kapselt.
Übungsvorschläge
- Implementiere ein einfaches CRUD für eine "Person"-Entität.
- Ergänze eine Such- und Sortierfunktion in der Index-Methode.
- Baue eine Validierung mit DataAnnotations (z. B. [Required], [StringLength]) ein.
- Setze eine Weiterleitung nach erfolgreichem Create/Update ein.
- Teste verschiedene Fehlerszenarien (leere Felder, ungültige Eingaben).
View: Index & Create
Beispiel: Index.cshtml (Lesen)
@model IEnumerable<PersonResponse>
<form asp-action="Index" method="get">
<select name="searchBy">
<option value="Name">Name</option>
<option value="Stadt">Stadt</option>
</select>
<input type="text" name="searchString" value="@ViewBag.CurrentSearchString" />
<button type="submit">Suchen</button>
</form>
<table>
<thead>
<tr>
<th>
@Html.ActionLink("Name", "Index", new { sortBy = "Name", sortOrder = ViewBag.NameSortParm })
</th>
<th>
@Html.ActionLink("Stadt", "Index", new { sortBy = "Stadt", sortOrder = ViewBag.StadtSortParm })
</th>
</tr>
</thead>
<tbody>
@foreach (var p in Model)
{
<tr>
<td>@p.Name</td>
<td>@p.Stadt</td>
</tr>
}
</tbody>
</table>
Beispiel: Create.cshtml (Erstellen)
<syntaxhighlight lang="html"> @model PersonAddRequest
<form asp-action="Create" method="post">
<label asp-for="Name"></label>
<input asp-for="Name" />
<label asp-for="Stadt"></label>
<input asp-for="Stadt" />
<button type="submit">Erstellen</button>
</form>