Model
using System.ComponentModel.DataAnnotations;
namespace TallinnaRakenduslikKolledz.Models
{
public enum Violations
{
Robbery,
Vandalism,
Assault,
Trespassing,
DrugPossession
}
public class Delinquents
{
[Key]
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Violations Violation { get; set; }
public bool IsTeacher { get; set; }
public string ViolationDescription { get; set; }
}
}
See klass hoiab infot rikkumise kohta ja võimaldab salvestada nii rikkumise tüüpi kui ka kirjeldust, ning kas isik on õpetaja või mitte.
Controller
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using TallinnaRakenduslikKolledz.Data;
using TallinnaRakenduslikKolledz.Models;
namespace TallinnaRakenduslikKolledz.Controllers
{
public class DelinquentsController : Controller
{
private readonly SchoolContext _context;
public DelinquentsController(SchoolContext context)
{
_context = context;
}
public async Task<IActionResult> Index()
{
var delinquents = await _context.Delinquents.ToListAsync();
return View(delinquents);
}
// Create
[HttpGet]
public async Task<IActionResult> Create()
{
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID, FirstName, LastName, Violation, IsTeacher, ViolationDescription" )] Delinquents delinquents)
{
if (ModelState.IsValid)
{
_context.Delinquents.Add(delinquents);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return NotFound();
}
// Details
[HttpGet]
public async Task<IActionResult> Details(int? id)
{
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(m => m.ID == id);
if (id == null)
{
return NotFound();
}
if (delinquent == null)
{
return NotFound();
}
return View(delinquent);
}
// Edit
[HttpGet]
public async Task<IActionResult> Edit(int? id)
{
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(m => m.ID == id);
if (id == null)
{
return NotFound();
}
if (delinquent == null)
{
return NotFound();
}
_context.Delinquents.Update(delinquent);
return View(delinquent);
}
[HttpPost, ValidateAntiForgeryToken, ActionName("Edit")]
public async Task<IActionResult> EditConfirmed(int id,
[Bind("ID, FirstName, LastName, Violation, IsTeacher, ViolationDescription")] Delinquents delinquents)
{
_context.Delinquents.Update(delinquents);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
//Delete
[HttpGet]
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var delinquent = await _context.Delinquents.FirstOrDefaultAsync(m => m.ID == id);
if (delinquent == null)
{
return NotFound();
}
return View(delinquent);
}
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var delinquent = await _context.Delinquents.FindAsync(id);
_context.Delinquents.Remove(delinquent);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
}
}
DelinquentsController haldab rikkujate andmeid: kuvab nimekirja, lisab uusi, näitab detaile, muudab olemasolevaid ja kustutab objekti.
Index
Kuvab kõik rikkujad andmebaasist.
Kasutab ToListAsync(), et tuua kõik kirjed asünkroonselt.
Create (GET)
Avab vaate uue rikkuja lisamiseks.
Create (POST)
Salvestab uue rikkuja andmebaasi, kui mudel on korrektne (ModelState.IsValid).
Kasutab _context.Delinquents.Add() ja SaveChangesAsync().
Kui andmed ei ole korras, tagastab NotFound().
Details
Kuvab ühe konkreetse rikkuja detailid.
Kasutab FirstOrDefaultAsync(m => m.ID == id) rikkuja leidmiseks.
Edit (GET)
Leiab rikkuja ID järgi ja avab muutmise vaate.
Kasutab FirstOrDefaultAsync().
EditConfrimed (POST)
Salvestab muudetud andmed andmebaasi Update() ja SaveChangesAsync() abil.
Delete (GET)
Kuvab kustutamise kinnituse vaate.
Kasutab FirstOrDefaultAsync() rikkuja leidmiseks.
DeleteConfirmation (POST)
Kustutab rikkuja andmebaasist FindAsync() abil leitud objektid ja salvestab muudatused.
Vaated
Index
@model IEnumerable<TallinnaRakenduslikKolledz.Models.Delinquents>
@{
ViewData["Title"] = "Võlglased";
}
<h1>Delinqients</h1>
<p><a asp-action="Create">Loo uue võlgu</a></p>
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(Model => Model.FirstName)</th>
<th>@Html.DisplayNameFor(Model => Model.LastName)</th>
<th>@Html.DisplayNameFor(Model => Model.Violation)</th>
<th>Tööriistad</th>
</tr>
</thead>
<tbody>
@foreach (var delinquent in Model)
{
<tr>
<td>@Html.DisplayFor(ModelItem => delinquent.FirstName)</td>
<td>@Html.DisplayFor(ModelItem => delinquent.LastName)</td>
<td>@Html.DisplayFor(ModelItem => delinquent.Violation)</td>
<td>
<a asp-action="Edit" asp-route-id="@delinquent.ID">Muuda</a> |
<a asp-action="Details" asp-route-id="@delinquent.ID">Vaata</a> |
<a asp-action="Delete" asp-route-id="@delinquent.ID">Eemalda</a>
</td>
</tr>
}
</tbody>
</table>
Create
@model TallinnaRakenduslikKolledz.Models.Delinquents
@{
ViewData["Title"] = "Võlglaste loomine";
}
<h2>Loo uus võlglane</h2>
<hr />
<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="FirstName" class="control-label"></label>
<input asp-for="FirstName" class="form-control"/>
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName" class="control-label"></label>
<input asp-for="LastName" class="form-control"/>
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Violation" class="control-label"></label>
<br />
<select asp-for="Violation" class="control-label" asp-items="Html.GetEnumSelectList<Violations>()">
<option value="">--Vali rikkumine--</option>
</select>
<span asp-validation-for="Violation" class="text-danger"></span>
</div>
<div class="form-group form-check">
<label asp-for="IsTeacher" class="control-label"></label>
<br />
<input asp-for="IsTeacher" class="form-check-label"/>
<span asp-validation-for="IsTeacher" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ViolationDescription" class="control-label"></label>
<input asp-for="ViolationDescription" class="form-control" />
<span asp-validation-for="ViolationDescription" class="text-danger"></span>
</div>
<br />
<div class="form-group">
<input type="submit" value="Loo" class="btn btn-primary" />
<a asp-action="Index" class="btn btn-primary">Tagasi</a>
</div>
</form>
</div>
</div>
Details
@model TallinnaRakenduslikKolledz.Models.Delinquents
@{
ViewData["Title"] = "Info võlglase kohta";
}
<h1>@ViewData["Title"]</h1>
<div>
<h4>Võlglane @Model.FirstName @Model.LastName</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.FirstName)</dt>
<dd class="col-sm-10">@Html.DisplayFor(Model => Model.FirstName)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.LastName)</dt>
<dd class="col-sm-10">@Html.DisplayFor(Model => Model.LastName)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.Violation)</dt>
<dd class="col-sm-10">@Html.DisplayFor(Model => Model.Violation)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.IsTeacher)</dt>
<dd class="col-sm-10">@Html.DisplayFor(Model => Model.IsTeacher)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(Model => Model.ViolationDescription)</dt>
<dd class="col-sm-10">@Html.DisplayFor(Model => Model.ViolationDescription)</dd>
</dl>
</div>
<div>
<a asp-action="Index">Tagasi võlglaste nimekirja</a>
</div>
Edit
@model TallinnaRakenduslikKolledz.Models.Delinquents
@{
ViewData["Title"] = "Muuda võlglase andmed";
}
<h1>@ViewData["Title"]</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="FirstName" class="control-label"></label>
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="LastName" class="control-label"></label>
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Violation" class="control-label"></label>
<br />
<select asp-for="Violation" class="control-label" asp-items="Html.GetEnumSelectList<Violations>()">
<option value="">@Model.Violation</option>
</select>
<span asp-validation-for="Violation" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="IsTeacher" class="control-label"></label>
<br />
<input asp-for="IsTeacher" class="form-check-label" />
<span asp-validation-for="IsTeacher" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="ViolationDescription" class="control-label"></label>
<input asp-for="ViolationDescription" class="form-control" />
<span asp-validation-for="ViolationDescription" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Muuda" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Mine tagasi loendisse </a>
</div>
Delete
@model TallinnaRakenduslikKolledz.Models.Delinquents
@{
ViewData["Title"] = "Kustuta võlglane";
}
<h1>@ViewData["Title"]</h1>
<h3>
Kas oled kindel, et tahad võlglast @Model.FirstName @Model.LastName eemaldada?
</h3>
<div>
<h4>Võlglane @Model.FirstName @Model.LastName</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.FirstName)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.FirstName)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.LastName)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.LastName)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Violation)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.Violation)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.IsTeacher)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.IsTeacher)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.ViolationDescription)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.ViolationDescription)</dd>
</dl>
</div>
<form asp-action="Delete">
<input type="hidden" asp-for="ID" />
<input type="submit" value="Kustuta võlglane" class="btn btn-danger" /> | <a asp-action="Index">Tühista</a>
</form>