Kurse:Crud Operations

Aus ahrensburg.city
Version vom 29. Juni 2025, 20:13 Uhr von Thorsten (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= ASP.NET MVC – Controller und Views für Read & Create = == Controller == === Index (Read) === * Liest Daten (z. B. Liste von Objekten) aus dem Service. * Übergibt Daten an die View zur Anzeige. * Typischer Rückgabewert: <code>IActionResult</code> → <code>return View(model);</code> <syntaxhighlight lang="csharp"> public IActionResult Index(string sortBy, string searchBy, string searchString) { var persons = _personService.GetFilteredPerson…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

ASP.NET MVC – Controller und Views für Read & Create

Controller

Index (Read)

  • Liest Daten (z. B. Liste von Objekten) aus dem Service.
  • Übergibt Daten an die View zur Anzeige.
  • Typischer Rückgabewert: IActionResultreturn View(model);
public IActionResult Index(string sortBy, string searchBy, string searchString)
{
    var persons = _personService.GetFilteredPersons(sortBy, searchBy, searchString);
    return View(persons);
}

Create (Form anzeigen + speichern)

  • GET: Gibt leere Formular-View zurück.
  • POST: Validiert Eingabe, erstellt Objekt, leitet weiter zu Index.
[HttpGet]
public IActionResult Create()
{
    return View();
}

[HttpPost]
public IActionResult Create(PersonAddRequest person)
{
    if (ModelState.IsValid)
    {
        _personService.AddPerson(person);
        return RedirectToAction("Index");
    }
    return View(person);
}

Views

Index.cshtml (Lesen)

  • Starke Typisierung: @model IEnumerable<PersonResponse>
  • Tabellenanzeige mit Sortierung und Suche.
<form asp-controller="Persons" asp-action="Index" method="get">
    <select name="searchBy">
        <option value="Name">Name</option>
        <option value="Email">Email</option>
    </select>
    <input type="text" name="searchString" />
    <input type="submit" value="Suchen" />
</form>

<table>
    <thead>
        <tr>
            <th>
                @Html.ActionLink("Name", "Index", new { sortBy = "Name" })
            </th>
        </tr>
    </thead>
    <tbody>
        @foreach (var person in Model)
        {
            <tr><td>@person.Name</td></tr>
        }
    </tbody>
</table>

Create.cshtml (Erstellen)

  • Formular mit Tag Helpers
  • Modelbindung + Validierung
@model PersonAddRequest

<form asp-action="Create" method="post">
    <div asp-validation-summary="ModelOnly"></div>

    <label asp-for="Name"></label>
    <input asp-for="Name" />
    <span asp-validation-for="Name"></span>

    <button type="submit">Speichern</button>
</form>

Best Practices

  • **Stark typisierte Views** statt ViewBag.
  • **Trennung von Anliegen** (Services für Logik, Views für UI).
  • **Teilansichten** für wiederverwendbare UI-Komponenten.
  • **Validierung mit DataAnnotations** (z. B. [Required]).
  • **Redirect nach POST** zur Vermeidung von doppelten Einreichungen.

Dinge, die man vermeiden sollte

  • Komplexe Logik in Views.
  • Zu starke Kopplung zwischen View und Controller.
  • Übermäßige Nutzung von ViewBag statt ViewModels.
  • Feste Strings für Sortierung – besser Konstanten oder Enums.
  • Unvalidierte Benutzereingaben – immer sanitizen.

Interview-Fokus

  • Verständnis von MVC-Architektur.
  • Anwendung von Model Binding und Validierung.
  • Verwendung von Razor-Syntax.
  • Fehlerbehandlung und Weiterleitungen.
  • Beachtung von Clean Code und Best Practices.