eduka projekti kirjeldus
HelloWorld("print")
Projekt – TallinnaRakenduslikKolledž
Projekti eesmärk on luua algeline andmebaas tulevase kooli jaoks õppe eesmärgil.
Projekt kasutab MVC struktuuri, kus mudel, vaade ja kontroller töötavad harmoonias. Mudel on andmemudeli alus, kus on kõik kasutatavad andmed olemas. Vaade on veebilehe struktuur, kuhu paigutatakse andmebaasi ehitus ja nupud. Controller on MVC struktuuri tehniline osa, kus on näiteks erinevad meetodid, et luua, kustutada ja muuta andmeid andmebaasis.
Näited koodist:
Osakondade mudel: Loob algelise mudeli osakondade andmebaasi jaoks
using System.ComponentModel.DataAnnotations;
namespace TallinnaRakenduslikKolledž.Models
{
public class Department
{
[Key]
public int DepartmentID { get; set; }
public string Name { get; set; }
public decimal Budget { get; set; }
public DateTime StartDate { get; set; }
public int? InstructorIDˇ { get; set; }
public Instructor? Administrator { get; set; }
public ICollection<Course>? Courses { get; set; }
public byte? RowVersion { get; set; }
/* 3 isiklikku unikaalset andmevälja kursusele juurde */
public DateTime EndDate { get; set; }
public int? SocialCreditScore { get; set; }
public bool SigmaStatus { get; set; }
}
}
Osakondade index vaade: loob veebilehe struktuuri.
@model IEnumerable<TallinnaRakenduslikKolledž.Models.Department>
@{
ViewData["Title"] = "Osakonnad";
}
<h1>Osakonnad</h1>
<p>
<a asp-action="Create">Loo uus osakond</a>
</p>
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.Name)</th>
<th>@Html.DisplayNameFor(model => model.Budget)</th>
<th>@Html.DisplayNameFor(model => model.StartDate)</th>
<th>@Html.DisplayNameFor(model => model.Administrator)</th>
<th>@Html.DisplayNameFor(model => model.RowVersion)</th>
<th>@Html.DisplayNameFor(model => model.EndDate)</th>
<th>@Html.DisplayNameFor(model => model.SigmaStatus)</th>
<th>Tööriistad)</th>
</tr>
</thead>
<tbody>
@foreach(var department in Model)
{
<tr>
<td> @Html.DisplayFor(modelItem => department.Name)</td>
<td> @Html.DisplayFor(modelItem => department.Budget)</td>
<td> @Html.DisplayFor(modelItem => department.StartDate)</td>
<td> @Html.DisplayFor(modelItem => department.Administrator)</td>
<td> @Html.DisplayFor(modelItem => department.RowVersion)</td>
<td> @Html.DisplayFor(modelItem => department.EndDate)</td>
<td> @Html.DisplayFor(modelItem => department.SigmaStatus)</td>
<td>
@* /* Muuda */ *@
@* /* Vaata */ *@
@* /* Vaata Adminit */ *@
@* /* Kustuta */ *@
<a asp-action="Delete" asp-route-id="@department.DepartmentID" class="btn btn-danger">Eemalda</a>
<a class="btn btn-danger" asp-area="" asp-controller="Departments" asp-action="Details">Vaata</a>
</td>
</tr>
}
</tbody>
</table>
Osakondade kontroller: kõik tehniline kood vajalik andmebaasi tööks.
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using TallinnaRakenduslikKolledž.Data;
using TallinnaRakenduslikKolledž.Models;
namespace TallinnaRakenduslikKolledž.Controllers
{
public class DepartmentsController : Controller
{
private readonly SchoolContext _context;
public DepartmentsController(SchoolContext context)
{
_context = context;
}
public async Task<IActionResult> Index()
{
var schoolContext = _context.Departments.Include(d => d.Administrator);
return View(await schoolContext.ToListAsync());
}
[HttpGet]
public IActionResult Create()
{
ViewData["InstructorID"] = new SelectList(_context.Instructors, "ID", "FullName");
ViewData["StudentId"] = new SelectList(_context.Instructors, "Id", "LastName", "FirstName");
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("Name,Budget,StartDate,RowVersion,InstructorID,SigmaStatus,EndDate,SocialCreditScore")] Department department)
{
if (ModelState.IsValid)
{
_context.Add(department);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
ViewData["InstructorID"] = new SelectList(_context.Instructors, "Id", "FullName", department.InstructorIDˇ);
return View(department);
}
[HttpGet]
public async Task<IActionResult> Delete(int? id)
{
ViewData["Värv"] = "punane";
if (id == null)
{
return NotFound();
}
var department = await _context.Departments.Include(d => d.Administrator).FirstOrDefaultAsync(d => d.DepartmentID == id);
if (department == null)
{
return NotFound();
}
return View(department);
}
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Delete(Department department)
{
if (await _context.Departments.AnyAsync(m => m.DepartmentID == department.DepartmentID))
{
_context.Departments.Remove(department);
await _context.SaveChangesAsync();
}
return RedirectToAction("Index");
}
[HttpGet]
public async Task<IActionResult> Details(int? id)
{
ViewData["Värv"] = "sinine";
var instructor = await _context.Departments.FindAsync(id);
return View("Delete",instructor);
}
}
}