Kurse:Crud Operations: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
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…“ |
(kein Unterschied)
|
Aktuelle Version vom 29. Juni 2025, 20:13 Uhr
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:
IActionResult→return 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
ViewBagstatt 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.