Kurse:Grud Operatoren
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>