#

 

 

- Modelbinding, Formular binden an Datenmodel, Data Binding

- Daten anfügen von MVC Model zu SQL Server

 

Im Eingabeformular wird mit der <form asp-action=Create > die Daten an die Create-Action des gleichnamigen Controller gesandt.

Dabei werden alle Eingabedaten als form-daten übergeben.

 

 

Die Rückgabe Action Create wir als [HttpPost] deklariert, wodurch alle Formulardaten als http zurückkommen.

[HttpPost]

 

Unter ASP.Net Core wird die Rückgabe Action als asynchroner Task definiert, in welchen als Parameter das zugrundeliegende Datenmodel eingegeben wird.

Dadurch wird direkt beim Aufruf der Action Create die gesendeten Formulardaten an das ViewModel übergeben.

Diesen Vorgang nennt man Model Binding oder Formulardaten an das passende Datenmodel binden.

[HttpPost]

public async Task<IActionResult> Create(ViewModels.ViewModel_Artikel_New formData)

 

 

Wenn die Daten zurückgesendet werden, dann werden die Daten beim Aufruf der Action an das passenden Modell gebunden.

In diesem Fall sind die formData an ein ViewModel_Artikel_new übergeben.

Ansicht im Breakpoint des Debuggers beim Aufruf der HttpPost Rückgabe-Action

 

Datensatz speichern oder anfügen

 

Das Datenset ist in diesem Fall aus der Tabelle Artikel und muss hierzu zuvor von den Formulardaten extrahiert werden

Model__Artikel data = formData.Artikel;

 

Die Daten werden bei MVC dadurch an den Datenserver übergeben, indem man in der Datenschnittstelle _context per .add(..) ein Datenset anfügt.

_context.Add(data);

 

Alle Daten werden von der Anwendung zum Server übernommen, indem man mit Datencontext.SaveChanges ausführt.

Model__Artikel data = formData.Artikel;

_context.Add(data);

await _context.SaveChangesAsync();

 

 

C# Code der Postback Action

        [HttpPost]

        [ValidateAntiForgeryToken]

        public async Task<IActionResult> Create(ViewModels.ViewModel_Artikel_New formData)

        {

            //----< Create() >----

            //*add a new dataset

            if (ModelState.IsValid)

            {

                Model__Artikel data = formData.Artikel;

                _context.Add(data);

                await _context.SaveChangesAsync();

                return RedirectToAction(nameof(Index));

            }

            return RedirectToAction("Index", "Artikel");

            //return View(data);

            //----</ Create() >----           

        }

 

Nach der übertragung sind die neuen Daten in der Index Auflistung sichtbar

 

 

 

Im Eingabeformular wird in form asp-action  definiert, zu welcher Action im gleichnamigen Controller das Formular gesendet werden soll

<form asp-action="Create">

 

Durch klicken auf den Submit Button werden alle Formular-Daten, welche sich als Input-Felder im Formular befinden, an die Action übergeben

<input asp-for="Artikel.Artikel" class="form-control" />

..

<select asp-for="Artikel.IDBase_Produktgruppe"..select>

 

Dabei werden die Daten entsprechend des eingestellten Datenmodell ViewModel aus dem Formular-Header übersandt

@model ArtikelWeb.ViewModels.ViewModel_Artikel_New   

 

 

Asp.Net Core MVC

 

 

Eingabe-Formular New

@model ArtikelWeb.ViewModels.ViewModel_Artikel_New   

..

 

<div class="row">

    <div class="col-md-4">

        <form asp-action="Create">

            <div asp-validation-summary="ModelOnly" class="text-danger"></div>

            <div class="form-group">

                <label asp-for="Artikel.Artikel" class="control-label"></label>

                <input asp-for="Artikel.Artikel" class="form-control" />

                <span asp-validation-for="Artikel.Artikel" class="text-danger"></span>

            </div>

..

            <div class="form-group">

                <label asp-for="Artikel.IDBase_Produktgruppe" class="control-label"></label>

 

                <select asp-for="Artikel.IDBase_Produktgruppe"

                        class="form-control"

                        asp-items="@(new SelectList(Model.Produktgruppen,"IDBase_Produktgruppe", "Produktgruppe"))"></select>

 

            </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>

 

 

 

 

Video Tutorial

https://www.youtube.com/watch?v=SkB6XGwNsqo

 

Mobile

.

123movies