eduka projekti kirjeldus
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
for (int i = 0; i < 5; i++)
{
Console.WriteLine(i);
}
Projekt “TallinnaRakenduslikKolledz”
Selle projekti eesmärk on luua funktsioonaalne kooli veebileht ning õppida, kuidas ehitada veebilehti kasutades C# .net MVC arhitektuuri.
Veebilehe haldaja saab avada veebilehe ning vaadata: õpilaste, õpetajate, osakonnade, kursuste ning korrarikkujate andmeid. Samas saab ta muuta, kustutada ja lisada igat neist.
Selles projektis on rakendatud MVC (Model View Controller) struktuur. Seega, et tekitada mingit objekti, peame looma uue Model’i ning Controller’i selle jaoks. Seejärel uuendame andmebaasi. Et kuvada andmeid veebilehel, peame tegema View’i ning siduma seda Controller’iga läbi C# koodi. View’i sisene kood on peamiselt HTML.
Kaustad:
Layout
Students
Students kaustas on olemas 5 vaadet (View):
Index, Create, Delete, Details ja Edit.
Index on peavaade, mis kuvab kõikide õppijate loetelu ning laseb muuta/vaadata nende andmeid. Koodina näeb see välja nii:
<h1>Õpilaste loend</h1>
<p>
<a asp-action="Create">Sisesta Õpilane</a>
</p>
<table class="table">
<thead>
<tr>
<th>
@Html.DisplayNameFor(Model => Model.LastName)
</th>
<th>
@Html.DisplayNameFor(Model => Model.FirstName)
</th>
<th>
@Html.DisplayNameFor(Model => Model.EnrollmentDate)
</th>
<th>
@Html.DisplayNameFor(Model => Model.Sleepy)
</th>
</tr>
</thead>
<tbody>
@foreach (var student in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => student.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => student.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => student.EnrollmentDate)
</td>
<td>
@Html.DisplayFor(modelItem => student.Sleepy)
</td>
<td>
<a asp-action="Edit" asp-route-id="@student.Id">Muuda</a>
<a asp-action="Details" asp-route-id="@student.Id">Vaata</a>
<a asp-action="Delete" asp-route-id="@student.Id">Kustuta</a>
<a asp-action="Clone" asp-route-id="@student.Id">Kloneeri</a>
</td>
</tr>
}
</tbody>
</table>
Create vaade laseb haldajal luua uut õpilast:
<h1>Loo uus Õpilane</h1>
<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="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="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="EnrollmentDate" class="control-label"></label>
<input asp-for="EnrollmentDate" class="form-control" />
<span asp-validation-for="EnrollmentDate" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Sleepy" class="control-label"></label>
<input asp-for="Sleepy" class="form-control" />
<span asp-validation-for="Sleepy" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Sisesta" class="btn btn-primary"/>
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Mine tagasi loendisse</a>
</div>
Delete vaade laseb haldajal kustutada olemas olevat õpilast loendist:
<h1>Kustuta õpilane</h1>
<h3>
Kas oled kindel, et tahad õpilast @Model.FirstName @Model.LastName eemaldada?
</h3>
<div>
<h4>Õpilane: @Model.FirstName @Model.LastName</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.LastName)</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.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.EnrollmentDate)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.EnrollmentDate)</dd>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Sleepy)</dt>
<dd class="col-sm-10">@Html.DisplayFor(model => model.Sleepy)</dd>
</dl>
@if (Model.Enrollments != null)
{
foreach (var courseEnrollment in Model.Enrollments)
{
<dl class="row">
<dd class="col-sm-10"> @courseEnrollment</dd>
</dl>
}
}
@if (Model.Smart != null)
{
@Model.Smart;
}
@if (Model.Tracks != null)
{
foreach (var track in Model.Tracks)
{
<dl class="row">
<dd class="col-sm-10">PlaceholderText</dd>
</dl>
}
}
</div>
<form asp-action="Delete">
<input type="hidden" asp-for="Id"/>
<input type="submit" value="Kustuta õpilane" class="btn btn-danger"/> | <a asp-></a>
</form>
<form asp-action="Index">
<input type="submit" value="Tagasi loendisse" class="btn btn-primary" />
</form>
Details vaade laseb haldajal vaadata õpilase infot:
<h1>Detailid</h1>
<div>
<form asp-action="Details">
<h4>Õpilane: @Model.FirstName @Model.LastName</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.LastName)</dt>
<dt class="col-sm-10">@Html.DisplayFor(model => Model.LastName)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.FirstName)</dt>
<dt class="col-sm-10">@Html.DisplayFor(model => Model.FirstName)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.EnrollmentDate)</dt>
<dt class="col-sm-10">@Html.DisplayFor(model => Model.EnrollmentDate)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.Sleepy)</dt>
<dt class="col-sm-10">@Html.DisplayFor(model => Model.Sleepy)</dt>
</dl>
@if (Model.Enrollments != null)
{
foreach (var courseEnrollment in Model.Enrollments)
{
<dl class="row">
<dd class="col-sm-10">@courseEnrollment</dd>
</dl>
}
}
@if (Model.Smart != null)
{
@Model.Smart;
}
@if (Model.Tracks != null)
{
foreach (var track in Model.Tracks)
{
<dl class="row">
<dd class="col-sm-10">PlaceholderText</dd>
</dl>
}
}
</form>
</div>
<form asp-action="Index">
<input type="submit" value="Tagasi loendisse" class="btn btn-primary" />
</form>
Edit vaade laseb haldajal muuta õpilase andmeid:
<h1>Muuda 6pilase andmeid</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="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="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="EnrollmentDate" class="control-label"></label>
<input asp-for="EnrollmentDate" class="form-control" />
<span asp-validation-for="EnrollmentDate" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Sleepy" class="control-label"></label>
<input asp-for="Sleepy" class="form-control" />
<span asp-validation-for="Sleepy" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Smart" class="control-label"></label>
<input asp-for="Smart" class="form-control" />
<span asp-validation-for="Smart" 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">Tagasi loendisse</a>
</div>
Instructors ehk õpetajate kaustas on ka 5 vaadet, Create, Delete, Details, Edit:
Index on Instructors’i peavaade, mis kuvab kõikide õpetajate loetelu ning võimalusi muuta ja vaadata nende andmeid. Koodina näeb see välja nii:
<h2>Õpetajad</h2>
<p>
<a asp-action="Create"> Lisa õpetaja</a>
</p>
<table class="table">
<thead>
<tr>
<th>Perekonnanimi</th>
<th>Eesnimi</th>
<th>Töölevõtukuupäev</th>
<th>Telefoninumber</th>
<th>Alkohoolik</th>
<th>Vangis olnud</th>
<th>🛠Tööriistad</th>
</tr>
</thead>
<tbody>
@foreach (var instructor in Model.Instructors)
{
string selectedRow = "";
if (instructor.ID == (int?)ViewData["InstructorID"])
{
selectedRow = "table-success";
}
<tr class="selectedRow">
<td>@Html.DisplayFor(modelItem => instructor.LastName)</td>
<td>@Html.DisplayFor(modelItem => instructor.FirstName)</td>
<td>@Html.DisplayFor(modelItem => instructor.HireDate)</td>
<td>
@if (instructor.OfficeAssignments != null)
{
@instructor.OfficeAssignments.Location
}
</td>
<td>
@foreach (var course in instructor.CourseAssignments)
{
@course.Course.CourseId @: @course.Course.Title <br/>
}
</td>
<td>@Html.DisplayFor(modelItem => instructor.BeenInJail)</td>
<td>
<a asp-action="QuickAction" asp-route-id="@instructor.ID">Muuda</a>
<a asp-action="Details" asp-route-id="@instructor.ID">Vaata</a>
<a asp-action="Delete" asp-route-id="@instructor.ID">Kustuta</a>
</td>
</tr>
}
</tbody>
</table>
Create vaade lubab haldajal luua uue õpetaja:
<h2>Õpetajad</h2>
<p>
<a asp-action="Create"> Lisa õpetaja</a>
</p>
<table class="table">
<thead>
<tr>
<th>Perekonnanimi</th>
<th>Eesnimi</th>
<th>Töölevõtukuupäev</th>
<th>Telefoninumber</th>
<th>Alkohoolik</th>
<th>Vangis olnud</th>
<th>🛠Tööriistad</th>
</tr>
</thead>
<tbody>
@foreach (var instructor in Model.Instructors)
{
string selectedRow = "";
if (instructor.ID == (int?)ViewData["InstructorID"])
{
selectedRow = "table-success";
}
<tr class="selectedRow">
<td>@Html.DisplayFor(modelItem => instructor.LastName)</td>
<td>@Html.DisplayFor(modelItem => instructor.FirstName)</td>
<td>@Html.DisplayFor(modelItem => instructor.HireDate)</td>
<td>
@if (instructor.OfficeAssignments != null)
{
@instructor.OfficeAssignments.Location
}
</td>
<td>
@foreach (var course in instructor.CourseAssignments)
{
@course.Course.CourseId @: @course.Course.Title <br/>
}
</td>
<td>@Html.DisplayFor(modelItem => instructor.BeenInJail)</td>
<td>
<a asp-action="QuickAction" asp-route-id="@instructor.ID">Muuda</a>
<a asp-action="Details" asp-route-id="@instructor.ID">Vaata</a>
<a asp-action="Delete" asp-route-id="@instructor.ID">Kustuta</a>
</td>
</tr>
}
</tbody>
</table>
Delete vaade lubab haldajal kustutada õpetaja loetelust:
<h1>Kustuta õpetaja</h1>
<h3>Kas soovid kustutada @Html.DisplayFor(model => model.FullName)</h3>
<div>
<h4>õpetaja</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.PhoneNumber)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.PhoneNumber)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Alcoholic)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Alcoholic)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.BeenInJail)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.BeenInJail)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.CourseAssignments)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.CourseAssignments)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.OfficeAssignments)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.OfficeAssignments)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.HireDate)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.HireDate)</dt>
</dl>
<form asp-action="Delete">
<input type="hidden" asp-for="ID"/>
<input type="submit" value="Kustuta" class="btn btn-danger" /> | <a asp-action="Index">Tühista</a>
</form>
</div>
Details vaade lubab haldajal vaadata õpetaja andmeid:
<h1>Detailid</h1>
<div>
<form asp-action="Details">
<h4>Õpetaja: @Model.FirstName @Model.LastName</h4>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.LastName)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.FirstName)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.HireDate)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.HireDate)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.Alcoholic)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.Alcoholic)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.BeenInJail)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.BeenInJail)</dt>
</dl>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.PhoneNumber)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.PhoneNumber)</dt>
</dl>
@if (Model.CourseAssignments != null)
{
foreach (var courseAssignment in Model.CourseAssignments)
{
<dl class="row">
<dd class="col-sm-10">@courseAssignment</dd>
</dl>
}
}
</form>
</div>
<form asp-action="Index">
<input type="submit" value="Tagasi loendisse" class="btn btn-primary" />
</form>
Edit vaade lubab haldajal muuta õpetaja andmeid:
<h1>Muuda õpetaja andmed</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="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="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="HireDate" class="control-label"></label>
<input asp-for="HireDate" class="form-control" />
<span asp-validation-for="HireDate" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="PhoneNumber" class="control-label"></label>
<input asp-for="PhoneNumber" class="form-control" />
<span asp-validation-for="PhoneNumber" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Alcoholic" class="control-label"></label>
<input asp-for="Alcoholic" class="form-control" />
<span asp-validation-for="Alcoholic" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="BeenInJail" class="control-label"></label>
<input asp-for="BeenInJail" class="form-control" />
<span asp-validation-for="BeenInJail" 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">Tagasi loendisse</a>
</div>
Departments
Index Departments ehk osakonnade peavaade, mis kuvab kõikide osakonnade loetelu ning võimalusi muuta ja vaadata nende andmeid. Koodina näeb see välja nii:
<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.RawVersion)</th>
<th>@Html.DisplayNameFor(model => model.CurrentStatus)</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.RawVersion)</td>
<td>@Html.DisplayFor(modelItem => department.CurrentStatus)</td>
<td>
@* /* Muuda */ *@
@* /* Vaata */ *@
@* /* Vaata Administraatorit*/ *@
@* /* Kustuta */ *@
<a asp-action="Delete" asp-route-id="@department.DepartmentID" class="btn btn-danger">Eemalda</a>
<a asp-action="Details" asp-route-id="@department.DepartmentID" class="btn btn-primary">Vaata</a>
<a asp-action="Edit" asp-route-id="@department.DepartmentID" class="btn btn-primary">Muuda</a>
</td>
</tr>
}
</tbody>
</table>
Create/Edit on topeltvaade, mis kuvab ühte kahest vaadest mingil tingimusel.
Create osa lubab haldajal luua uue osakonna:
@if (ViewBag.SelectedAction == "Create")
{
<h1>Asuta uus osakond</h1>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<input type="hidden" asp-for="RawVersion" value="@Html.Raw("0")" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
<label asp-for="Name" class="control-label">Name</label>
<input asp-for="Name" class="control-label" />
<span asp-validation-for="Name" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Budget" class="control-label">Budget</label>
<input asp-for="Budget" class="control-label" />
<span asp-validation-for="Budget" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="StartDate" class="control-label">StartDate</label>
<input asp-for="StartDate" class="control-label" />
<span asp-validation-for="StartDate" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="InstructorID" class="control-label">InstructorID</label>
<select asp-for="InstructorID" class="control-label" asp-items="ViewBag.InstructorID">
<option value=""> --Palun Vali Opetaja-- </option>
</select>
<span asp-validation-for="InstructorID" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="StudentsDroppedOut" class="control-label">StudentsDroppedOut</label>
<input asp-for="StudentsDroppedOut" class="control-label" />
<span asp-validation-for="StudentsDroppedOut" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="TotalGraduates" class="control-label">TotalGraduates</label>
<input asp-for="TotalGraduates" class="control-label" />
<span asp-validation-for="TotalGraduates" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Administrator" class="control-label">Administrator</label>
<input asp-for="Administrator" class="control-label" />
<span asp-validation-for="Administrator" class="text-danger" />
</div>
<div class="form-group">
<input type="submit" value="Loo" class="btn btn-primary"/> | <a asp-action="Index" class="btn btn-danger">Tühista</a>
</div>
</form>
</div>
</div>
}
Edit osa lubab haldajal muuta osakonna andmeid:
else
{
<h1>Muuda </h1>
<div>
<h2>Muuda osakonna andmed</h2>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<input type="hidden" asp-for="RawVersion" value="@Html.Raw(Model.DepartmentID)" />
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="DepartmentID" />
<div class="form-group">
<label asp-for="Name" class="control-label">Name</label>
<input asp-for="Name" class="control-label" />
<span asp-validation-for="Name" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Budget" class="control-label">Budget</label>
<input asp-for="Budget" class="control-label" />
<span asp-validation-for="Budget" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="StartDate" class="control-label">StartDate</label>
<input asp-for="StartDate" class="control-label" />
<span asp-validation-for="StartDate" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="InstructorID" class="control-label">InstructorID</label>
<select asp-for="InstructorID" class="control-label" asp-items="ViewBag.InstructorID">
<option value=""> --Palun Vali Opetaja-- </option>
</select>
<span asp-validation-for="InstructorID" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="StudentsDroppedOut" class="control-label">StudentsDroppedOut</label>
<input asp-for="StudentsDroppedOut" class="control-label" />
<span asp-validation-for="StudentsDroppedOut" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="TotalGraduates" class="control-label">TotalGraduates</label>
<input asp-for="TotalGraduates" class="control-label" />
<span asp-validation-for="TotalGraduates" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Administrator" class="control-label">Administrator</label>
<input asp-for="Administrator" class="control-label" />
<span asp-validation-for="Administrator" class="text-danger" />
</div>
<div class="form-group">
<input type="submit" value="Muuda" class="btn btn-primary" /> | <a asp-action="Index" class="btn btn-danger">Tühista</a>
</div>
</form>
</div>
</div>
</div>
}
Delete/Details on topeltvaade, mis kuvab osakonna andmeid, aga kustutada laseb ainult ühel tingimusel.
Details ehk andmete kuvamise osa:
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Name)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Name)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.DepartmentID)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.DepartmentID)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.TotalGraduates)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.TotalGraduates)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Budget)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Budget)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.StartDate)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.StartDate)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.InstructorID)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.InstructorID)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.CurrentStatus)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.CurrentStatus)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.StudentsDroppedOut)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.StudentsDroppedOut)</dt>
</dl>
Delete osa ehk HTML vorm, mis laseb kinnitada kustutamise:
<form asp-action="Delete">
<input type="hidden" asp-for="DepartmentID" />
<input type="hidden" asp-for="RawVersion" />
@if (ViewBag.SelectedAction == "Delete")
{
<input type="submit" value="Kustuta" class="btn btn-danger" />
}
<a asp-action="Index">Tühista</a>
</form>
Courses
Index on Courses ehk kursuste peavaade, mis kuvab kõikide kursuste loetelu ning võimalusi muuta ja vaadata nende andmeid. Koodina näeb see välja nii:
<h2>Kursused</h2>
<p>
<a asp-action="Create">Loo uus kursus</a>
</p>
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.CourseId)</th>
<th>@Html.DisplayNameFor(model => model.Title)</th>
<th>@Html.DisplayNameFor(model => model.Credits)</th>
<th>@Html.DisplayNameFor(model => model.Department.Name)</th>
@*<th>@Html.DisplayNameFor(model => model.Department.Administrator.FullName)</th> *@
<th>Tööriistad</th>
</tr>
</thead>
<tbody>
@foreach (var course in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => course.CourseId)
</td>
<td>
@Html.DisplayFor(modelItem => course.Title)
</td>
<td>
@Html.DisplayFor(modelItem => course.Credits)
</td>
<td>
@Html.DisplayFor(modelItem => course.Department.Name)
</td>
@* <td>
@Html.DisplayFor(modelItem => course.Department.Administrator.FullName)
</td>*@
<td>
<a asp-action="Delete" asp-route-id="@course.CourseId">Kustuta</a>
<a asp-action="Details" asp-route-id="@course.CourseId">Vaata</a>
<a asp-action="Edit" asp-route-id="@course.CourseId">Muuda</a>
</td>
</tr>
}
</tbody>
</table>
Create/Edit on topeltvaade, mis kuvab ühte kahest vaadest mingil tingimusel.
Create osa lubab haldajal luua uue kursuse:
@if (ViewBag.SelectedAction == "Create")
{
<h1>Tee uus kursus</h1>
<h4>Sisesta info:</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
@* <div>
<label asp-for="CourseId" class="control-label"></label>
<input asp-for="CourseId" class="form-control" />
<span asp-validation-for="CourseId" class="text-danger"></span>
</div> *@
<div>
<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>
<label asp-for="Credits" class="control-label"></label>
<input asp-for="Credits" class="form-control" />
<span asp-validation-for="Credits" class="text-danger"></span>
</div>
<div>
<label asp-for="Department" class="control-label"></label>
<select asp-for="DepartmentID" class="form-control" asp-items="ViewBag.DepartmentID">
<option value="" class="form-control"> --Vali osakond--</option>
</select>
<span asp-validation-for="DepartmentID" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Tee uus" class="btn btn-primary" /> | <a asp-action="Index" class="btn btn-outline-primary">Tühista</a>
</div>
</form>
</div>
</div>
}
Edit osa lubab haldaja muuta kursuse andmeid:
else
{
<h1>Muuda</h1>
<div>
<h2>Muuda kursuse andmed</h2>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<input type="hidden" asp-for="CourseId" />
<div class="form-group">
<label asp-for="Title" class="control-label">Title</label>
<input asp-for="Title" class="control-label"/>
<span asp-validation-for="Title" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Credits" class="control-label">Credits</label>
<input asp-for="Credits" class="control-label" />
<span asp-validation-for="Credits" class="text-danger" />
</div>
<div class="form-group">
<label asp-for="Department" class="control-label">Department</label>
<select asp-for="DepartmentID" class="form-control" asp-items="ViewBag.DepartmentID">
<option value="" class="form-control"> --Vali osakond--</option>
</select>
<span asp-validation-for="DepartmentID" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Muuda" class="btn btn-primary" />
</div>
</form>
</div>
</div>
</div>
}
Delete/Details on topeltvaade, mis kuvab kursuste andmeid, aga kustutada laseb ainult ühel tingimusel.
Details ehk andmete kuvamise osa:
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Title)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Title)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.CourseId)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.CourseId)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Credits)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Credits)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Department)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Department)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.DepartmentID)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.DepartmentID)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.Enrollments)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.Enrollments)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.CourseAssignments)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => model.CourseAssignments)</dt>
</dl>
Delete osa ehk HTML vorm, mis laseb kinnitada kustutamise:
<form asp-action="Delete">
<input type="hidden" asp-for="CourseId" />
@if (ViewBag.SelectedAction == "Delete")
{
<input type="submit" value="Kustuta" class="btn btn-danger" />
}
<a asp-action="Index">Tühista</a>
</form>
Delinquents
Index on Delinquents ehk korrarikkujate peavaade, mis kuvab kõikide korrarikkujate loetelu ning võimalusi muuta ja vaadata nende andmeid. Koodina näeb see välja nii:
<h2>Korrarikkujad</h2>
<p>
<a asp-action="Create">Lisa uus korrarikkuja</a>
</p>
<table class="table">
<thead>
<tr>
<th>@Html.DisplayNameFor(model => model.DelinquentID)</th>
<th>@Html.DisplayNameFor(model => model.LastName)</th>
<th>@Html.DisplayNameFor(model => model.FirstName)</th>
<th>@Html.DisplayNameFor(model => model.Violation)</th>
<th>@Html.DisplayNameFor(model => model.DelinquentType)</th>
<th>@Html.DisplayNameFor(model => model.Description)</th>
<th>Tööriistad</th>
</tr>
</thead>
<tbody>
@foreach (var delinquent in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => delinquent.DelinquentID)
</td>
<td>
@Html.DisplayFor(modelItem => delinquent.LastName)
</td>
<td>
@Html.DisplayFor(modelItem => delinquent.FirstName)
</td>
<td>
@Html.DisplayFor(modelItem => delinquent.Violation)
</td>
<td>
@Html.DisplayFor(modelItem => delinquent.DelinquentType)
</td>
<td>
@Html.DisplayFor(modelItem => delinquent.Description)
</td>
<td>
<a asp-action="Delete" asp-route-id="@delinquent.DelinquentID">Kustuta</a>
<a asp-action="Details" asp-route-id="@delinquent.DelinquentID">Vaata</a>
<a asp-action="Edit" asp-route-id="@delinquent.DelinquentID">Muuda</a>
</td>
</tr>
}
</tbody>
</table>
Create lubab haldajal lisada uue korrarikkuja:
<h1>Lisa uus korrarikkuja</h1>
<h4>Sisesta info:</h4>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Create">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div>
<label asp-for="LastName" class="control-label">LastName</label>
<input asp-for="LastName" class="form-control" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div>
<label asp-for="FirstName" class="control-label">FirstName</label>
<input asp-for="FirstName" class="form-control" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div>
<label asp-for="Violation" class="control-label">Violation</label>
<select asp-for="Violation" class="form-control" asp-items="ViewBag.ViolationList">
<option value="" class="form-control">--Vali osakond--</option>
</select>
<span asp-validation-for="Violation" class="text-danger"></span>
</div>
<div>
<label asp-for="DelinquentType" class="control-label">DelinquentType</label>
<select asp-for="DelinquentType" class="form-control" asp-items="ViewBag.DelinquentTypes">
<option value="" class="form-control">--Vali osakond--</option>
</select>
<span asp-validation-for="DelinquentType" class="text-danger"></span>
</div>
<div>
<label asp-for="Description" class="control-label">Description</label>
<input asp-for="Description" class="from-control" />
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Lisa uus korrarikkuja" class="btn btn-primary" />
</div>
</form>
</div>
</div>
<div>
<a asp-action="Index">Tagasi loendisse</a>
</div>
Delete vaade lubab haldajal kustutada korrarikkuja loetelust:
<h1>Kustuta korrarikkuja</h1>
<div>
<hr/>
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.DelinquentID)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.DelinquentID)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.Violation)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.Violation)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.DelinquentType)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.DelinquentType)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(model => Model.Description)</dt>
<dt class="col-sm-2">@Html.DisplayFor(model => Model.Description)</dt>
</dl>
<form asp-action="Delete">
<input type="hidden" asp-for="DelinquentID" />
<input type="submit" value="Kustuta" class="btn btn-danger" />
<a asp-action="Index">Tühista</a>
</form>
</div>
Details vaade lubab haldajal vaadata korrarikkuja andmeid:
<h2>@Html.DisplayFor(modelItem => Model.FirstName) @Html.DisplayFor(modelItem => Model.LastName)</h2>
<p>
<h3>Detailid</h3>
</p>
<div>
<hr />
<dl class="row">
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.DelinquentID)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.DelinquentID)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.LastName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.FirstName)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.Violation)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.Violation)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.DelinquentType)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.DelinquentType)</dt>
<dt class="col-sm-2">@Html.DisplayNameFor(modelItem => Model.Description)</dt>
<dt class="col-sm-2">@Html.DisplayFor(modelItem => Model.Description)</dt>
</dl>
<a asp-action="Index">Tagasi loendisse</a>
</div>
Edit vaade lubab haldajal muuta korrarikkuja andmeid:
<h1>Muuda</h1>
<div>
<h2>Muuda kursuse andmed</h2>
<hr />
<div class="row">
<div class="col-md-4">
<form asp-action="Edit">
<div asp-validation-summary=ModelOnly class="text-danger"></div>
<input type="hidden" asp-for="DelinquentID" />
<div class="form-group">
<label asp-for="LastName" class="control-label">Last Name</label>
<input asp-for="LastName" class="control-label" />
<span asp-validation-for="LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="FirstName" class="control-label">First Name</label>
<input asp-for="FirstName" class="control-label" />
<span asp-validation-for="FirstName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Violation" class="control-label">Violation</label>
<select asp-for="Violation" class="form-control" asp-items="ViewBag.ViolationList">
<option value="" class="form-control">--Vali korrarikkumise liigi</option>
</select>
<span asp-validation-for="Violation" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="DelinquentType" class="control-label">Delinquent Type</label>
<select asp-for="DelinquentType" class="form-control" asp-items="ViewBag.DelinquentTypes">
<option value="" class="form-control">--Vali korrarikkuja liigi--</option>
</select>
<span asp-validation-for="DelinquentType" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Description" class="control-label">Description</label>
<input asp-for="Description" class="control-label" />
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Muuda" class="btn btn-primary" />
</div>
</form>
</div>
</div>
</div>
<div>
Kontrollerid:
StudentsController
StudentsController vastutab andmevahetuse eest Students mudeli ja vaadete vahel.
Constructor meetod võtab parameetriks, meie andmebaasi konteksti ning seab _context muutujale selle väärtust
private readonly SchoolContext _context;
public StudentsController(SchoolContext context)
{
_context = context;
}
Index meetod leiab õppija mudelite loetelu kontekstis kasutades funktsiooni ToListAsync() ning tagastab seda loetelu vaadesse.
public async Task<IActionResult> Index()
{
return View(await _context.Students.ToListAsync());
}
Create Get meetod tagastab samanimelise vaade.
[HttpGet]
public IActionResult Create()
{
return View();
}
Create Post meetod loob uue Students mudeli, antud andmetega. Kontrollib, kas mudel valideerub, siis lisab Students kontekstisse uue õppija mudeli, salvestab konteksti muutusi asünkroonselt ning suunab ümber Index meetodisse.
Juhul kui mudel ei valideeru, meetod tagastab samanimelise vaadet koos juba sisestatud õppija andmetega.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("ID, LastName, FirstName, EnrollmentDate, Sleepy")] Student student)
{
if (ModelState.IsValid)
{
_context.Students.Add(student);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
// return RedirectToAction(nameof(Index));
}
return View(student);
}
Delete Get meetod võtab valikulise parameetrina õpilase id’t. Kui parameeter on tühi, siis meetod tagastab Error 404 “Ei leitud”. Vastasel juhul meetod otsib õpilase mudelit, kasutades asünkroonset link funktsiooni FirstOrDefaultAsync, mis tagastab esimest andmemudelit, mis rahuldab tingimust (mudeli Id peab vastama parameeterina antud id’le). Juhul kui õpilase mudel on tühi, tagastame Error 404 ‘Ei leitud’. Vastasel juhul meetod tagastab samanimelise vaade ning annab sellele üle valitud õpilase andmemudelit.
[HttpGet]
public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}
var student = await _context.Students.FirstOrDefaultAsync(m => m.Id == id);
if (student == null)
{
return NotFound();
}
return View(student);
}
Delete Post meetod. Võtab vastu kohustuslikku parameetri id ning otsib valitud õpilase Students kontekstis kasutades asükroonse link funktsiooni FindAsync, mis leiab andmemudeli antud id’ga. Siis Students konteksist eemaldatakse antud andmemudel ning koneksti muutuseid asünkroonselt salvestatakse. Meetod suunab kasutaja üle Index meetodisse.
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var student = await _context.Students.FindAsync(id);
_context.Students.Remove(student);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
Details Get meetod võtab vastu valikulise parameetri id ning kontrollib, kas id on tühi, juhul kui jah: tagastab Error 404, ‘Ei leitud’. Juhul kui id on olemas, otsib õpilase andmemudelit Students kontekstis, kasutades asünkroonse funktsiooni FindAsync(), mis tagastab andmemudelit antud id’ga. Kui õpilase andmemudel on tühi, siis tagastab Error 404, ‘Ei leitud’. Vastasel juhul, tagastab samanimelise vaade ning annab sellele üle õpilase andemudelit.
[HttpGet]
public async Task<IActionResult> Details(int? id)
{
if (id == null)
{
return NotFound();
}
var student = await _context.Students.FindAsync(id);
if (student == null)
{
return NotFound();
}
return View(student);
}
Details Post meetod suunab kasutajat üle Indeks meetodisse
public async Task<IActionResult> CloseDetails()
{
return RedirectToAction("Index");
}
Edit Get meetod võtab vastu valikulise parameetri id ning kontrollib kas see on tühi, kui jah siis: tagastab Error 404, ‘Ei leitud’. Vastasel juhul leiab õpilase andmemudeli Students kontekstist kasutades asünkroonse link funktsiooni FindAsync(), mis leiab andmemudeli antud id’ga. Kui andmemudel on tühi, tagastab Error 404, ‘Ei leitud’. Vastasel juhul tagastab samanimelise vaade ning annab sellele üle õpilase andmemudeli.
[HttpGet]
public async Task<IActionResult> Edit(int? id)
{
if (id == null)
{
return NotFound();
}
var student = await _context.Students.FindAsync(id);
if (student == null)
{
return NotFound();
}
return View(student);
}
Edit Post meetod, võtab vastu kohustulikku parameetri student, ning kontrollib kas see andmemudel valideerub, kui ei: tagastab sama vaadet tagasi. Vastasel juhul uuendab Students kontekstis asuvat õpilase antud andmemudeli, asünkroonselt salvestab muutusi ning suunab kasutaja Index meetodisse.
[HttpPost, ActionName("Edit")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit([Bind("Id, LastName, FirstName, EnrollmentDate, Sleepy, Smart")] Student student)
{
if (ModelState.IsValid)
{
_context.Students.Update(student);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}
return View(student);
}
InstructorsController
Constructor meetod võtab parameetriks, meie andmebaasi konteksti ning seab _context muutujale selle väärtust
private readonly SchoolContext _context;
public InstructorsController(SchoolContext context)
{
_context = context;
}
Index meetod võtab valikulisteks parameetriteks id ja courseId ninb määrab muutujaks vm InstructorIndexData viewmodeli. Siis meetod lisab vm.Instructors’isse õpetajate loendi ja määrab OfficeAssignments ja Assignments sidumist loendi objektidega kasutades Include() funktsiooni. Pärast õpetajate mudelite leidmist, asünkroonselt tagastab neid ühte loendina. Ja lõpuks tagastab vaadet koos õpetajate loendiga.
public async Task<IActionResult> Index(int? id, int? courseId)
{
var vm = new InstructorIndexData();
vm.Instructors = await _context.Instructors
.Include(i => i.OfficeAssignments)
.Include(i => i.CourseAssignments)
.ToListAsync();
return View(vm);
}
Create Get meetod loob uue õpetaja mudeli ning lisab selle attribuutile CourseAssignments listi tüübi CourseAssignments. Tagastab samanimelise vaade
[HttpGet]
public IActionResult Create()
{
var instructor = new Instructor();
instructor.CourseAssignments = new List<CourseAssignment>();
return View();
}
Create Post meetod võtab kohustuslikuks parameetriks õpetaja mudelit ja valitudkursused. Kui valitudkursused ei ole tühi, meetod võtab igat kursust valitudkursustest, seab InstructorID’t ja CourseID’t ning lisab seda õpetaja CourseAssignments’itesse.
Meetod kustutab valitudkursuseid ModelState’st. Kui ModelState valideerub, siis kontekstisse lisatakse uue õpetaja mudeli, asünkroonselt salvestatakse muutuseid ning ümbersuunatakse kasutajat Index meetodisse. Vastasel juhul, tagastatakse Create vaade koos õpetaja mudeli andmetega.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create(Instructor instructor, string selectedCourses)
{
if (selectedCourses != null)
{
instructor.CourseAssignments = new List<CourseAssignment>();
foreach (var course in selectedCourses)
{
var courseToAdd = new CourseAssignment
{
InstructorID = instructor.ID,
CourseID = course,
};
instructor.CourseAssignments.Add(courseToAdd);
}
}
ModelState.Remove("selectedCourses");
if (ModelState.IsValid)
{
_context.Add(instructor);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
// PopulateAssignedCourseData(instructor);
return View(instructor);
}
Delete Get meetod võtab valikulisteks parameetriteks id ja SaveChangesError.
Kui id on tühi, siis tagastab Error 404, ‘Ei leitud’. Vastasel juhul, määrab mutuuja deletableInstructor’i väärtuseks, kontekstist valitud õpetaja mudeli, kasutades asünkroonset linq funktsiooni FirstOrDefaultASync(), mis tagastab objekti, mis rahuldab antud tingimust. Kui deletableInstructor on tühi, siis tagastab Error 404, ‘Ei leitud’. Vastasel juhul tagastab samanimelise vaade koos valitud õpetaja andmemudeliga.
[HttpGet]
public async Task<IActionResult> Delete(int? id, bool? saveChangesError = false)
{
if (id == null)
{
return NotFound();
}
var deletableInstructor = await _context.Instructors
.FirstOrDefaultAsync(s => s.ID == id);
if (deletableInstructor == null)
{
return NotFound();
}
return View(deletableInstructor);
}
Delete Post meetod võtab kohustuslikuks parameetriks id ning otsib ainust õpetaja modeli kontekstis mille id vastab parameetrile, kasutaes asünkroonset linq funktsiooni SingleAsync(). Siis kontekstist kustutatakse valitud õpetaja mudeli, asünkroonselt salvestatakse muutuseid ja teeb ümbersuunamise Index meetodisse.
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public async Task<IActionResult> DeleteConfirmed(int id)
{
Instructor deletableInstructor = await _context.Instructors
.SingleAsync(i => i.ID == id);
_context.Instructors.Remove(deletableInstructor);
await _context.SaveChangesAsync();
return RedirectToAction("Index");
}