Kurse:Grud Operatoren

Aus ahrensburg.city
Version vom 25. Juni 2025, 11:05 Uhr von Thorsten (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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>