Im Controller erstellt man eine neue Action Methode mit
der Bezeichnung New
public IActionResult New()
{
//----<
New() >----
//*leeres
eingabe-formular fuer neuen Datensatz
return View();
//----</
New() >----
}
|
Dann klickt man bei der new() Methode auf den Kontext
-> Add View..
Und im Dialog Add MVC View wird als Vorgabe View name:
New erstellt.
Am Besten übernimmt man in Template die Create-Auswahl
und bindet bei Model-Class die passende Tabellen-Klasse an wie hier Artikel aus
/Models/Artikel
Dadurch wird eine gute Vorlage für einen Neueintrag in
der Tabelle erstellt
TagHelper
Unter ASP.Net Core MVC
Das Model/Views/New werden die TagHelper asp-for direkt
in die HTML Labels eingebaut. Dadurch werden die HTML Labels zur Laufzeit im
IIS Server zu passenden ASP Funktionalitäten erweitert.
Microsoft
ASPNetCore.MVC.TagHelper asp-for
Bei Form wird der Name hinzugefügt
Beim Tag asp-validation wird in der Ausgabe eine
Gültigkeitsprüfung hinzugefügt
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
|
Bei Label wird die Focus-weiterleitung zum passenden Eingabefeld
eingefügt
<label asp-for="Title" class="control-label"></label>
|
Am Ende wird ein Button eingefügt, welcher beim
Erstellen zur Action Create führt und hier die Formular-Daten mit übernimmt.
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
|
Eingabe Code der View New
/Views/Artikel/New.cshtml
@model ArtikelWeb.Models.Artikel
@{
ViewData["Title"] = "New";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>New</h2>
<h4>Artikel</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="New">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Title" class="control-label"></label>
<input asp-for="Title" class="form-control" />
<span asp-validation-for="Title" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Text_Content" class="control-label"></label>
<input asp-for="Text_Content" class="form-control" />
<span asp-validation-for="Text_Content" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="IDProduktgruppe" class="control-label"></label>
<input asp-for="IDProduktgruppe" class="form-control" />
<span asp-validation-for="IDProduktgruppe" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Preis" class="control-label"></label>
<input asp-for="Preis" class="form-control" />
<span asp-validation-for="Preis" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="IDHersteller" class="control-label"></label>
<input asp-for="IDHersteller" class="form-control" />
<span asp-validation-for="IDHersteller" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Back to List</a>
</div>
|
Browser Ansicht der Eingabe
Formular
Die Label asp-for Felder zeigen den Text zum
Eingabeelement an, welcher direkt aus dem Model abgeleitet wird. Das heißt,
dass hier der interne Feldname angezeigt wird.
Dafür wird beim Klick auf das Label eines Felder der Fokus
in das Eingabefeld springt.
Die Felder mit der ID vom Typ Long werden automatisch mit
eine up-down counter angezeigt.
Als Referenz gilt die angebundene Tabelle aus der SQL
Datenbank
Vergleich MVC5 Schreibweise
Alternative Schreibweise mit @Razor:
Unter ASP MVC 5
@model ArtikelWeb.Models.Artikel
@{
ViewData["Title"] = "New";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>New</h2>
<h4>Artikel</h4>
<hr />
@using (Html.BeginForm("Create", "Artikel"))
{
//<Form
>
<div>
<@Html.LabelFor(a=>a.Title)>
<@Html.TextBoxFor(a=>a.Title, new {@class="form-control" } )>
</div>
//</Form
>
}
|
Video Tutorial
https://www.youtube.com/watch?v=_ajpjNHOylY&feature=youtu.be