Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Asp Core Mvc: Create Formular

 

 

Dieses Beispiel zeigt ein Create Formular mit Asp.Net Core Mvc.

Dabei wird mit dem Formular ein neuer Eintrag unter der Tabelle Notizen erstellt.

Die ID wird automatisch erzeugt, während der Eingabe wird mit einer Gültigkeitsprüfung geprüft ob ein Notiz-Titel eingegeben wurde.

 

 

Create Formular

Mit der Controller Action Notes/Create wird die passende View /Views/Notes/Create.cshtml aufgerufen.

Das Formular benötigt nur eine Titel Eingabe und einen Button:Create.

 

 

Ergibt das Listen-Ergebnis

Nach dem Ausführen von Create wird das Ergebnis auf der Liste /Notes/Index_all angezeigt

 

Gültigkeitsprüfung

Wenn nichts im Titel Feld eingegeben wird, dann kommt noch vor dem Absenden die Validierungs-Nachricht, dass die notwendigen Eingaben fehlen.

Die Clientseitige Prüfung erfolgt rein dadurch, dass im Datenmodel das Attribute Required hinzugefügt wurde.

 [MaxLength(255)]

 [Required]

public string Title { get; set; }

 

 

Validation

Leer-String Serverseitig ModelState.IsValid

Wenn ein leeres Feld "" eingegeben wird, dann wird der Fehler Serverseitig abgefangen

Mit ModelState.IsValid=false

Im Breakpoint ist sichtbar, dass die Root/ChildNotes: Subkey:Title den ValidationState=Invalid aufweist.

 

Controller Create Action Methode

Datei: Controllers/NotesController.cs

 

Controller: Notes

        // POST: Note/Create

        // To protect from overposting attacks, please enable the specific properties you want to bind to, for

        [HttpPost]

        [ValidateAntiForgeryToken]

        public async Task<IActionResult> Create([Bind("Title,Text")] NoteModel noteModel)

        {

            //-------------< Create >-------------

            //--< Get User ID >--

            //internal referenz-Number for tracking in tables

            long IDUser = await Userinfos.UserInfo_Methods.getIDUser_as_Number(this.User, _dbContext);

            //--</ Get User ID >--

 

            if (ModelState.IsValid)

            {

                //---< Add Record >---

                //< autofill >

                noteModel.DtCreated = DateTime.Now;

                noteModel.DtEdit = DateTime.Now;

                noteModel.IDUser = IDUser;

                noteModel.sumViews = 0;

                //</ autofill >

 

                //-< add >-

                //*to buffer

                _dbContext.Add(noteModel);

                //*to server

                await _dbContext.SaveChangesAsync();

                //-</ add >-

 

                //-< to List >

                return RedirectToAction(nameof(Index_All));

                //-</ to List >

                //---</ Add Record >---

            }

            else

            {

                //--< errors >--

                //*validation fails, no Title

                //*with Errors back to create form

                return View( noteModel);

                //--</ errors >--

            }

            //-------------</ Create >-------------

        }

 

Datenmodel: NoteModel.

Das Model hat zur Prüfung der Gültikeit vor der Variable Title ein [Required] Attribute.

Dieses Validation-Attribute sorgt dafür, dass bei der Neu-Erstellung mindestens ein echtes Zeichen eingegeben werden muss im Titel.

 

Datei zum Model

Models/NoteModel.cs

 

 

 

Daten-Model NoteModel Klasse

NoteModel

using System;

//< using >

using System.ComponentModel.DataAnnotations;

//</ using >

 

namespace IWois_Core.Models

{

    public class NoteModel

    {

        //-------------< Class: Model_Project >-------------

        #region Variables

        //------------< Region: Variables >------------

        //[Required]

        [Key]

        public long IDNote { get; set; }      

        public long IDUser { get; set; }

       

        [MaxLength(255)]

        [Required]

        public string Title { get; set; }

        public string Text { get; set; }

 

        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]

        public DateTime? DtEdit { get; set; }

 

        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}")]

        public DateTime? DtCreated { get; set; }

        public int? sumViews { get; set; }

 

        //------------</ Region: Variables >------------

        #endregion /Variables

        //-------------</ Class: Model_Project >-------------

    }

}

 

 

 

View: Create

Datei: /Views/Notes/Create.cshtml       

Im Razor Code wurde in diesem Fall das Feld für IDUser aus-kommentiert.

Man könnte das Feld auch als Type=Hidden einfügen. Allerdings wird es in diesem Fall nicht verwendet.

@model IWois_Core.Models.NoteModel

 

@{

    ViewData["Title"] = "Create";

    Layout = "~/Views/Shared/_Layout.cshtml";

}

 

<hr />

<div class="row">

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

        <form asp-action="Create">

            <div class="form-group">

                <input type="submit" value="Create" class="btn btn-default" />

            </div>

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

 

            @*Visible Asp Core Field*@

            @*<div class="form-group">

                <input asp-for="IDUser" class="form-control" disabled />

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

            </div>*@

 

            @*Hidden Asp Core Field*@

            @*<input type="hidden" asp-for="IDUser"  />*@

 

 

            <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" class="control-label"></label>

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

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

            </div>

 

        </form>

    </div>

</div>

 

 

@section scripts {

    @{await Html.RenderPartialAsync("_ValidationscriptsPartial");}

}

 

 

Mobile
»
Asp.Net Core MVC: Formular Feldwerte ohne Model ermitteln
»
Asp MVC: Großes Textfeld Input, Textarea , Div mit HTML
»
Asp Core Mvc: Beispiel eines Create Formular
»
Asp Core: Eingabefeld ausblenden, ID Feld verstecken

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de