{"id":46,"date":"2025-10-08T09:55:37","date_gmt":"2025-10-08T07:55:37","guid":{"rendered":"https:\/\/kaurpakaste24.thkit.ee\/wp\/?page_id=46"},"modified":"2025-11-12T16:54:09","modified_gmt":"2025-11-12T14:54:09","slug":"courses-controller-mudel-ja-view","status":"publish","type":"page","link":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/","title":{"rendered":"Courses Controller, Mudel ja View"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Controller<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">SchoolContext _context annab Controllerile ja Vaatele teada mis andmebaas v\u00e4lja n\u00e4eb ning k\u00f5ik informatsioon selle sees.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Index laseb meil vaadata k\u00f5ik Courses informatsiooni \u00fcldiselt kasutades ToListAsync() meetodit mis paneb k\u00f5ik raamatud tabelisse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create esimesena annab meile Create vaate ning siis kui on informatsioon antud, see kontrollib et mudel on \u00f5ige ning kui on, lisab andmebaasile ja viib sind tagasi Indexisse.<br>Antud juhul annab ka teada ViewBag-ile et &#8220;Creation&#8221; on T\u00f5ene et vaade n\u00e4itaks Creation vaadet.<br>See kasutab ka SaveChangesAsync et salvestada informatsiooni<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Delete kustutab antud valik \u00e4ra peale kui kontrollib et asi on olemas. see kasutab esimesena FirstorDefaultAsync, mis Tagastab as\u00fcnkroonselt jada esimese elemendi. Ning kasutab Lambda meetodit et l\u00fchidalt n\u00e4idata anon\u00fc\u00fcmset meetodit.<br>Antud juhul annab ka ViewBag-ile teada et &#8220;Deletion&#8221; on t\u00f5ene, et vaade teab mida n\u00e4idata.<br>Ning siis salvestab andmebaasi peale kui kustutab valitud objekt \u00e4ra.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Details lubab meil vaadata t\u00e4psemad informatsiooni antud objekti kohta. See kasutab samuti FirstorDefaultAsync ja Lambda meetodit. See laseb ka teada ViewBag-ile et deletion on v\u00e4\u00e4r et vaade n\u00e4itab Detaile.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Edit lubab meil muuta antud objekti. Kasutab FirstorDefaultAsync ja Lambda meetodit. Sellel on ka post-meetod mis siis salvestab k\u00f5ike mis muudeti. Laseb teada ka ViewBag-ile et Creation on v\u00e4\u00e4r et teab millist vaadet n\u00e4idata.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Rendering;\nusing Microsoft.EntityFrameworkCore;\nusing TallinnaRakenduslikKolledzKaur.Data;\nusing TallinnaRakenduslikKolledzKaur.Models;\n\nnamespace TallinnaRakenduslikKolledzKaur.Controllers\n{\n    public class CoursesController : Controller\n    {\n        private readonly SchoolContext _context;\n\n        public CoursesController(SchoolContext context)\n        {\n            _context = context;\n        }\n\n        public async Task&lt;IActionResult&gt; Index()\n        {\n            var courses = _context.Courses.Include(c =&gt; c.Department);\n            return View(await courses.ToListAsync());\n        }\n        &#x5B;HttpGet]\n        public IActionResult Create()\n        {\n            PopulateDepartmentsDropDownList();\n            return View();\n        }\n        &#x5B;HttpPost]\n        &#x5B;ValidateAntiForgeryToken]\n        public async Task&lt;IActionResult&gt; Create(Course course)\n        {\n            if (ModelState.IsValid)\n            {\n                _context.Courses.Add(course);\n                await _context.SaveChangesAsync();\n                PopulateDepartmentsDropDownList(course.DepartmentID);\n            }\n\n            return RedirectToAction(&quot;Index&quot;);\n        }\n        &#x5B;HttpGet]\n        public async Task&lt;IActionResult&gt; Delete(int? id)\n        {\n            ViewData&#x5B;&quot;deletion&quot;] = true;\n            if (id == null || _context.Courses == null)\n            {\n                return NotFound();\n            }\n            var courses = await _context.Courses.Include(c =&gt;c.Department).AsNoTracking().FirstOrDefaultAsync(m =&gt; m.CourseId == id);\n            if (courses == null)\n            {\n                return NotFound();\n            }\n            return View(courses);\n        }\n        &#x5B;HttpPost, ActionName(&quot;Delete&quot;)]\n        &#x5B;ValidateAntiForgeryToken]\n        public async Task&lt;IActionResult&gt; DeleteConfirmed (int id)\n        {\n            if (_context.Courses == null)\n            {\n                return NotFound();\n            }\n            var course = await _context.Courses.FindAsync(id);\n            if (course != null)\n            { \n                _context.Courses.Remove(course);\n            }\n            await _context.SaveChangesAsync();\n            return RedirectToAction(&quot;Index&quot;);\n        }\n        &#x5B;HttpGet]\n        public async Task&lt;IActionResult&gt; Details(int? id)\n        {\n            ViewData&#x5B;&quot;deletion&quot;] = false;\n            if (id == null)\n            {\n                return NotFound();\n            }\n            var courses = await _context.Courses.Include(c =&gt; c.Department).AsNoTracking().FirstOrDefaultAsync(m =&gt; m.CourseId == id);\n            if (courses == null)\n            {\n                return NotFound();\n            }\n            return View(&quot;Delete&quot;, courses);\n        }\n\n        &#x5B;HttpGet]\n        public async Task&lt;IActionResult&gt; Edit(int? id)\n        {\n            PopulateDepartmentsDropDownList();\n            ViewData&#x5B;&quot;creation&quot;] = false;\n            if (id == null)\n            {\n                return NotFound();\n            }\n            var courses = await _context.Courses.Include(c =&gt; c.Department).AsNoTracking().FirstOrDefaultAsync(m =&gt; m.CourseId == id);\n            if (courses == null)\n            {\n                return NotFound();\n            }\n            \/*_context.Departments.Update(department);        *\/\n            return View(&quot;Create&quot;, courses);\n        }\n        &#x5B;HttpPost, ActionName(&quot;Edit&quot;)]\n        &#x5B;ValidateAntiForgeryToken]\n        public async Task&lt;IActionResult&gt; EditConfirmed(&#x5B;Bind(&quot;CourseId,Title,Credits,Enrollments,Department,DepartmentID,CourseAssignments&quot;)] Course course)\n        {\n            _context.Courses.Update(course);\n            await _context.SaveChangesAsync();\n            return RedirectToAction(&quot;Index&quot;);\n        }\n\n        private void PopulateDepartmentsDropDownList(object selectedDepartment = null)\n        {\n            var departmentsQuery = from d in _context.Departments\n                                   orderby d.Name\n                                   select d;\n            ViewBag.DepartmentID = new SelectList(departmentsQuery.AsNoTracking(), &quot;DepartmentID&quot;, &quot;Name&quot;, selectedDepartment);\n        }\n    }\n}\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Mudel<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nusing System.ComponentModel.DataAnnotations;\n\nnamespace TallinnaRakenduslikKolledzKaur.Models\n{\n    public class Course\n    {\n        &#x5B;Key]\n        public int CourseId { get; set; }\n        public string Title { get; set; }\n        public int Credits { get; set; }\n\n        public ICollection&lt;Enrollment&gt;? Enrollments { get; set; }\n        public Department? Department { get; set; }\n        public int? DepartmentID { get; set; }\n        public ICollection&lt;CourseAssignment&gt;? CourseAssignments { get; set; }\n    }\n} \n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">View<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Create ja Edit &#8211; Need kaks on samas vaates kuna see oli \u00fclesanne, See kasutab &#8220;Viewbag&#8221;-i et kontrollida millist osa kuvada<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n@model TallinnaRakenduslikKolledzKaur.Models.Course\n\n\n@if (ViewBag.creation == true)\n{\n\tViewData&#x5B;&quot;Title&quot;] = &quot;Uus Kursus&quot;;\n\n&lt;h1&gt;Tee uus kursus&lt;\/h1&gt;\n&lt;h4&gt;Sisesta info:&lt;\/h4&gt;\n&lt;hr\/&gt;\n&lt;div class=&quot;row&quot;&gt;\n\t&lt;div class=&quot;col-md-4&quot;&gt;\n\t\t &lt;form asp-action=&quot;Create&quot;&gt;\n\t\t\t  &lt;div asp-validation-summary=&quot;ModelOnly&quot; class=&quot;text-danger&quot;&gt;&lt;\/div&gt;\n\t\t\t  &lt;!--&lt;div&gt;\n\t\t\t\t  &lt;label asp-for=&quot;CourseId&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t  &lt;input asp-for=&quot;CourseId&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t  &lt;span asp-validation-for=&quot;CourseId&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t  &lt;\/div&gt; --&gt;\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;label asp-for=&quot;Title&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t&lt;input asp-for=&quot;Title&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t&lt;span asp-validation-for=&quot;Title&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;label asp-for=&quot;Credits&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t&lt;input asp-for=&quot;Credits&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t&lt;span asp-validation-for=&quot;Credits&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;div&gt;\n\t\t\t\t&lt;label asp-for=&quot;Department&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t&lt;select asp-for=&quot;DepartmentID&quot; class=&quot;form-control&quot; asp-items=&quot;ViewBag.DepartmentID&quot;&gt;\n\t\t\t\t\t&lt;option value=&quot;&quot; class=&quot;form-control&quot; &gt;--Vali Osakond--&lt;\/option&gt;\n\t\t\t\t&lt;\/select&gt;\n\t\t\t\t&lt;span asp-validation-for=&quot;DepartmentID&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t&lt;\/div&gt;\n\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t&lt;input type=&quot;submit&quot; value=&quot;Tee uus&quot; class=&quot;btn btn-primary&quot;\/&gt; | &lt;a asp-action=&quot;Index&quot; class=&quot;btn btn-outline-primary&quot;&gt;T\u00fchista&lt;\/a&gt;\n\t\t\t&lt;\/div&gt;\n\t\t &lt;\/form&gt;\n\t&lt;\/div&gt;\n&lt;\/div&gt;\n}\n\nelse if (ViewBag.creation == false)\n{\n\n\tViewData&#x5B;&quot;Title&quot;] = &quot;Muuda Kursus&quot;;\n\n\n\t&lt;h1&gt;Muuda Kursus&lt;\/h1&gt;\n\t&lt;hr \/&gt;\n\t&lt;div class=&quot;row&quot;&gt;\n\t\t&lt;div class=&quot;col-md-4&quot;&gt;\n\t\t\t&lt;form asp-action=&quot;Edit&quot;&gt;\n\t\t\t\t&lt;input type=&quot;hidden&quot; asp-for=&quot;@Model.CourseId&quot; \/&gt;\n\t\t\t\t&lt;div asp-validation-summary=&quot;ModelOnly&quot; class=&quot;text-danger&quot;&gt;&lt;\/div&gt;\n\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t&lt;label asp-for=&quot;Title&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t&lt;input asp-for=&quot;Title&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t&lt;span asp-validation-for=&quot;Title&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t&lt;label asp-for=&quot;Credits&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t&lt;input asp-for=&quot;Credits&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t&lt;span asp-validation-for=&quot;Credits&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t&lt;label asp-for=&quot;Enrollments&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t&lt;input asp-for=&quot;Enrollments&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t&lt;span asp-validation-for=&quot;Enrollments&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div&gt;\n\t\t\t\t\t&lt;label asp-for=&quot;Department&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t&lt;select asp-for=&quot;DepartmentID&quot; class=&quot;form-control&quot; asp-items=&quot;ViewBag.DepartmentID&quot;&gt;\n\t\t\t\t\t\t&lt;option value=&quot;&quot; class=&quot;form-control&quot;&gt;--Vali Osakond--&lt;\/option&gt;\n\t\t\t\t\t&lt;\/select&gt;\n\t\t\t\t\t&lt;span asp-validation-for=&quot;DepartmentID&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t&lt;label asp-for=&quot;CourseAssignments&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t&lt;input asp-for=&quot;CourseAssignments&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t&lt;span asp-validation-for=&quot;CourseAssignments&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;!--&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t\t&lt;label asp-for=&quot;InstructorID&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t\t&lt;input asp-for=&quot;InstructorID&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t\t&lt;span asp-validation-for=&quot;InstructorID&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t\t&lt;label asp-for=&quot;Administrator&quot; class=&quot;control-label&quot;&gt;&lt;\/label&gt;\n\t\t\t\t\t\t&lt;input asp-for=&quot;Administrator&quot; class=&quot;form-control&quot; \/&gt;\n\t\t\t\t\t\t&lt;span asp-validation-for=&quot;Administrator&quot; class=&quot;text-danger&quot;&gt;&lt;\/span&gt;\n\t\t\t\t&lt;\/div&gt;\t\t --&gt;\n\t\t\t\t&lt;div class=&quot;form-group&quot;&gt;\n\t\t\t\t\t&lt;input type=&quot;submit&quot; asp-route-id=&quot;@Model.DepartmentID&quot; value=&quot;Edit&quot; class=&quot;btn btn-primary&quot; \/&gt;\n\t\t\t\t&lt;\/div&gt;\n\t\t\t&lt;\/form&gt;\n\t\t&lt;\/div&gt;\n\t&lt;\/div&gt;\n\n\t&lt;div&gt;\n\t\t&lt;a asp-action=&quot;Index&quot;&gt;Mine tagasi loendisse&lt;\/a&gt;\n\t&lt;\/div&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Delete ja Edit &#8211; Need kaks on samas vaates, kasutab samat ViewBag-i et kontrollida millist asja kuvada.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n@model TallinnaRakenduslikKolledzKaur.Models.Course\n\n@if (ViewBag.deletion == true)\n{\n\n\tViewData&#x5B;&quot;Title&quot;] = &quot;Kustuta Kursus&quot;;\n\n\t&lt;h2&gt;@Html.DisplayFor(modelItem =&gt; Model.Title)&lt;\/h2&gt;\n\n\t&lt;p&gt;\n\t\t&lt;h3&gt;Kustuta Kursus:&lt;\/h3&gt;\n\t&lt;\/p&gt;\n\t&lt;div&gt;\n\t\t&lt;hr \/&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Title)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Title)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Credits)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Credits)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Enrollments)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Enrollments)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Department)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Department)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.DepartmentID)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.DepartmentID)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.CourseAssignments)&lt;\/dt&gt;\n\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayFor(Model =&gt; Model.CourseAssignments)&lt;\/dt&gt;\n\n\t\t&lt;form asp-action=&quot;Delete&quot;&gt;\n\t\t\t&lt;input type=&quot;hidden&quot; asp-for=&quot;CourseId&quot; \/&gt;\n\t\t\t&lt;input type=&quot;submit&quot; value=&quot;Kustuta Osakond&quot; class=&quot;btn btn-danger&quot; \/&gt; | &lt;a asp-action=&quot;Index&quot;&gt;T\u00fchista&lt;\/a&gt;\n\t\t&lt;\/form&gt;\n\t&lt;\/div&gt;\n}\n\nelse if (ViewBag.deletion == false)\n{\n\n\tViewData&#x5B;&quot;Title&quot;] = &quot;Viewing Kursus&quot;;\n\n\n\t&lt;div&gt;\n\t\t&lt;h4&gt;Kursus @Model.Title&lt;\/h4&gt;\n\t\t&lt;hr \/&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Title)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Title)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Credits)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Credits)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Enrollments)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Enrollments)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.Department)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.Department)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.DepartmentID)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.DepartmentID)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t\t&lt;dl class=&quot;row&quot;&gt;\n\t\t\t&lt;dt class=&quot;col-sm-2&quot;&gt;@Html.DisplayNameFor(Model =&gt; Model.CourseAssignments)&lt;\/dt&gt;\n\t\t\t&lt;dd class=&quot;col-sm-10&quot;&gt;@Html.DisplayFor(Model =&gt; Model.CourseAssignments)&lt;\/dd&gt;\n\t\t&lt;\/dl&gt;\n\t&lt;\/div&gt;\n\n\n\t&lt;form asp-action=&quot;Tagasi&quot;&gt;\n\t\t&lt;input type=&quot;hidden&quot; asp-for=&quot;DepartmentID&quot; \/&gt;\n\t\t&lt;a asp-action=&quot;Index&quot;&gt;Tagasi&lt;\/a&gt;\n\t&lt;\/form&gt;\n}\n\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\">Index<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\n@model IEnumerable&lt;TallinnaRakenduslikKolledzKaur.Models.Course&gt;\n\n@{\n\tViewData&#x5B;&quot;Title&quot;] = &quot;Kursused\/\u00d5ppeained&quot;;\n}\n&lt;h2&gt;Kursused&lt;\/h2&gt;\n&lt;p&gt;\n\t&lt;a asp-action=&quot;Create&quot;&gt;Tee uus kursus&lt;\/a&gt;\n&lt;\/p&gt;\n\n&lt;table class=&quot;table&quot;&gt;\n\t&lt;thead&gt;\n\t\t&lt;tr&gt;\n\t\t\t&lt;th&gt;@Html.DisplayNameFor(Model =&gt; Model.CourseId)&lt;\/th&gt;\n\t\t\t&lt;th&gt;@Html.DisplayNameFor(Model =&gt; Model.Title)&lt;\/th&gt;\n\t\t\t&lt;th&gt;@Html.DisplayNameFor(Model =&gt; Model.Credits)&lt;\/th&gt;\n\t\t\t&lt;th&gt;Department&lt;\/th&gt;\n\t\t\t&lt;th&gt;@Html.DisplayNameFor(Model =&gt; Model.Department.Administrator.FullName)&lt;\/th&gt;\n\t\t\t&lt;th&gt;T\u00f6\u00f6riistad&lt;\/th&gt;\n\t\t&lt;\/tr&gt;\n\t&lt;\/thead&gt;\n\n\t&lt;tbody&gt;\n\t\t@foreach (var course in Model)\n\t\t{\n\t\t\t&lt;tr&gt;\n\t\t\t\t&lt;td&gt;@Html.DisplayFor(modelItem =&gt; course.CourseId)\t\t &lt;\/td&gt;\n\n\t\t\t\t&lt;td&gt;@Html.DisplayFor(modelItem =&gt; course.Title)\t \t\t &lt;\/td&gt;\n\n\t\t\t\t&lt;td&gt;@Html.DisplayFor(modelItem =&gt; course.Credits)\t  \t\t &lt;\/td&gt;\n\n\t\t\t\t&lt;td&gt;@Html.DisplayFor(modelItem =&gt; course.Department.Name)\t  \t\t &lt;\/td&gt;\n\n\t\t\t\t&lt;td&gt;@Html.DisplayFor(modelItem =&gt; course.Department.Administrator.FullName)\t   \t\t &lt;\/td&gt;\n\n\t\t\t\t&lt;td&gt;&lt;a asp-action=&quot;Delete&quot; asp-route-id=&quot;@course.CourseId&quot;&gt;Kustuta&lt;\/a&gt;\n\t\t\t\t\t&lt;a asp-action=&quot;Details&quot; asp-route-id=&quot;@course.CourseId&quot;&gt;Details&lt;\/a&gt;\n\t\t\t\t\t&lt;a asp-action=&quot;Edit&quot; asp-route-id=&quot;@course.CourseId&quot;&gt;Edit&lt;\/a&gt;&lt;\/td&gt;\n\t\t\t&lt;\/tr&gt;\n\t\t}\n\t&lt;\/tbody&gt;\n&lt;\/table&gt;\n<\/pre><\/div>\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Controller SchoolContext _context annab Controllerile ja Vaatele teada mis andmebaas v\u00e4lja n\u00e4eb ning k\u00f5ik informatsioon selle sees. Index laseb meil vaadata k\u00f5ik Courses informatsiooni \u00fcldiselt kasutades ToListAsync() meetodit mis paneb k\u00f5ik raamatud tabelisse. Create esimesena annab meile Create vaate ning siis kui on informatsioon antud, see kontrollib et mudel on \u00f5ige ning kui on, lisab andmebaasile ja viib sind tagasi Indexisse.Antud juhul annab ka teada ViewBag-ile et &#8220;Creation&#8221; on T\u00f5ene et vaade n\u00e4itaks Creation vaadet.See kasutab ka SaveChangesAsync et salvestada informatsiooni Delete kustutab antud valik \u00e4ra peale kui kontrollib et asi on olemas. see kasutab esimesena FirstorDefaultAsync, mis Tagastab as\u00fcnkroonselt jada esimese elemendi. Ning kasutab Lambda meetodit et l\u00fchidalt n\u00e4idata anon\u00fc\u00fcmset meetodit.Antud juhul annab ka ViewBag-ile teada et &#8220;Deletion&#8221; on t\u00f5ene, et vaade teab mida n\u00e4idata.Ning siis salvestab andmebaasi peale kui kustutab valitud objekt \u00e4ra. Details lubab meil vaadata t\u00e4psemad informatsiooni antud objekti kohta. See kasutab samuti FirstorDefaultAsync ja Lambda meetodit. See laseb ka teada ViewBag-ile et deletion on v\u00e4\u00e4r et vaade n\u00e4itab Detaile. Edit lubab meil muuta antud objekti. Kasutab FirstorDefaultAsync ja Lambda meetodit. Sellel on ka post-meetod mis siis salvestab k\u00f5ike mis muudeti. Laseb teada ka ViewBag-ile et Creation on v\u00e4\u00e4r et teab millist vaadet n\u00e4idata. Mudel View Create ja Edit &#8211; Need kaks on samas vaates kuna see oli \u00fclesanne, See kasutab &#8220;Viewbag&#8221;-i et kontrollida millist osa kuvada Delete ja Edit &#8211; Need kaks on samas vaates, kasutab samat ViewBag-i et kontrollida millist asja kuvada. Index<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-46","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Courses Controller, Mudel ja View - Kaur Portfoolio<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/\" \/>\n<meta property=\"og:locale\" content=\"et_EE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Courses Controller, Mudel ja View - Kaur Portfoolio\" \/>\n<meta property=\"og:description\" content=\"Controller SchoolContext _context annab Controllerile ja Vaatele teada mis andmebaas v\u00e4lja n\u00e4eb ning k\u00f5ik informatsioon selle sees. Index laseb meil vaadata k\u00f5ik Courses informatsiooni \u00fcldiselt kasutades ToListAsync() meetodit mis paneb k\u00f5ik raamatud tabelisse. Create esimesena annab meile Create vaate ning siis kui on informatsioon antud, see kontrollib et mudel on \u00f5ige ning kui on, lisab andmebaasile ja viib sind tagasi Indexisse.Antud juhul annab ka teada ViewBag-ile et &#8220;Creation&#8221; on T\u00f5ene et vaade n\u00e4itaks Creation vaadet.See kasutab ka SaveChangesAsync et salvestada informatsiooni Delete kustutab antud valik \u00e4ra peale kui kontrollib et asi on olemas. see kasutab esimesena FirstorDefaultAsync, mis Tagastab as\u00fcnkroonselt jada esimese elemendi. Ning kasutab Lambda meetodit et l\u00fchidalt n\u00e4idata anon\u00fc\u00fcmset meetodit.Antud juhul annab ka ViewBag-ile teada et &#8220;Deletion&#8221; on t\u00f5ene, et vaade teab mida n\u00e4idata.Ning siis salvestab andmebaasi peale kui kustutab valitud objekt \u00e4ra. Details lubab meil vaadata t\u00e4psemad informatsiooni antud objekti kohta. See kasutab samuti FirstorDefaultAsync ja Lambda meetodit. See laseb ka teada ViewBag-ile et deletion on v\u00e4\u00e4r et vaade n\u00e4itab Detaile. Edit lubab meil muuta antud objekti. Kasutab FirstorDefaultAsync ja Lambda meetodit. Sellel on ka post-meetod mis siis salvestab k\u00f5ike mis muudeti. Laseb teada ka ViewBag-ile et Creation on v\u00e4\u00e4r et teab millist vaadet n\u00e4idata. Mudel View Create ja Edit &#8211; Need kaks on samas vaates kuna see oli \u00fclesanne, See kasutab &#8220;Viewbag&#8221;-i et kontrollida millist osa kuvada Delete ja Edit &#8211; Need kaks on samas vaates, kasutab samat ViewBag-i et kontrollida millist asja kuvada. Index\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/\" \/>\n<meta property=\"og:site_name\" content=\"Kaur Portfoolio\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-12T14:54:09+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/courses-controller-mudel-ja-view\\\/\",\"url\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/courses-controller-mudel-ja-view\\\/\",\"name\":\"Courses Controller, Mudel ja View - Kaur Portfoolio\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/#website\"},\"datePublished\":\"2025-10-08T07:55:37+00:00\",\"dateModified\":\"2025-11-12T14:54:09+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/courses-controller-mudel-ja-view\\\/#breadcrumb\"},\"inLanguage\":\"et\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/courses-controller-mudel-ja-view\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/courses-controller-mudel-ja-view\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Courses Controller, Mudel ja View\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/\",\"name\":\"Kaur Portfoolio\",\"description\":\"Noorem Tarkvaraarendaja TARpe24\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/kaurpakaste24.thkit.ee\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"et\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Courses Controller, Mudel ja View - Kaur Portfoolio","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/","og_locale":"et_EE","og_type":"article","og_title":"Courses Controller, Mudel ja View - Kaur Portfoolio","og_description":"Controller SchoolContext _context annab Controllerile ja Vaatele teada mis andmebaas v\u00e4lja n\u00e4eb ning k\u00f5ik informatsioon selle sees. Index laseb meil vaadata k\u00f5ik Courses informatsiooni \u00fcldiselt kasutades ToListAsync() meetodit mis paneb k\u00f5ik raamatud tabelisse. Create esimesena annab meile Create vaate ning siis kui on informatsioon antud, see kontrollib et mudel on \u00f5ige ning kui on, lisab andmebaasile ja viib sind tagasi Indexisse.Antud juhul annab ka teada ViewBag-ile et &#8220;Creation&#8221; on T\u00f5ene et vaade n\u00e4itaks Creation vaadet.See kasutab ka SaveChangesAsync et salvestada informatsiooni Delete kustutab antud valik \u00e4ra peale kui kontrollib et asi on olemas. see kasutab esimesena FirstorDefaultAsync, mis Tagastab as\u00fcnkroonselt jada esimese elemendi. Ning kasutab Lambda meetodit et l\u00fchidalt n\u00e4idata anon\u00fc\u00fcmset meetodit.Antud juhul annab ka ViewBag-ile teada et &#8220;Deletion&#8221; on t\u00f5ene, et vaade teab mida n\u00e4idata.Ning siis salvestab andmebaasi peale kui kustutab valitud objekt \u00e4ra. Details lubab meil vaadata t\u00e4psemad informatsiooni antud objekti kohta. See kasutab samuti FirstorDefaultAsync ja Lambda meetodit. See laseb ka teada ViewBag-ile et deletion on v\u00e4\u00e4r et vaade n\u00e4itab Detaile. Edit lubab meil muuta antud objekti. Kasutab FirstorDefaultAsync ja Lambda meetodit. Sellel on ka post-meetod mis siis salvestab k\u00f5ike mis muudeti. Laseb teada ka ViewBag-ile et Creation on v\u00e4\u00e4r et teab millist vaadet n\u00e4idata. Mudel View Create ja Edit &#8211; Need kaks on samas vaates kuna see oli \u00fclesanne, See kasutab &#8220;Viewbag&#8221;-i et kontrollida millist osa kuvada Delete ja Edit &#8211; Need kaks on samas vaates, kasutab samat ViewBag-i et kontrollida millist asja kuvada. Index","og_url":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/","og_site_name":"Kaur Portfoolio","article_modified_time":"2025-11-12T14:54:09+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/","url":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/","name":"Courses Controller, Mudel ja View - Kaur Portfoolio","isPartOf":{"@id":"https:\/\/kaurpakaste24.thkit.ee\/wp\/#website"},"datePublished":"2025-10-08T07:55:37+00:00","dateModified":"2025-11-12T14:54:09+00:00","breadcrumb":{"@id":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/#breadcrumb"},"inLanguage":"et","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/kaurpakaste24.thkit.ee\/wp\/courses-controller-mudel-ja-view\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kaurpakaste24.thkit.ee\/wp\/"},{"@type":"ListItem","position":2,"name":"Courses Controller, Mudel ja View"}]},{"@type":"WebSite","@id":"https:\/\/kaurpakaste24.thkit.ee\/wp\/#website","url":"https:\/\/kaurpakaste24.thkit.ee\/wp\/","name":"Kaur Portfoolio","description":"Noorem Tarkvaraarendaja TARpe24","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kaurpakaste24.thkit.ee\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"et"}]}},"_links":{"self":[{"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/46","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/comments?post=46"}],"version-history":[{"count":7,"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/46\/revisions"}],"predecessor-version":[{"id":85,"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/pages\/46\/revisions\/85"}],"wp:attachment":[{"href":"https:\/\/kaurpakaste24.thkit.ee\/wp\/wp-json\/wp\/v2\/media?parent=46"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}