Bonjour !

Je débute dans la création de site internet avec asp.net. J'ai deux tables (BDD -> mySQL), "Report" et "HazardType". Je créer les Reports dans un form et l'un des attributs de ces derniers est HazardType. Dans la table HazardType, j'ai stocké les noms que je veux proposer dans mon form. Jusqu'ici, les HazardType du form étaient codés en brut mais j'aimerai accéder à ceux de la table pour les mettre a la place du code en dur.

Voici le code :

UploadReport.cshtml (Page avec le formulaire à remplir pour faire un Report)
Code CSHTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
@model Report
@{
    ViewData["Title"] = "Create a report";
}
 
<head>
</head>
<body>
    <div>
        <h4>Create a Report</h4>
        <form asp-controller="Report" asp-action="UploadReport"
              enctype="multipart/form-data" method="post">
            <input asp-for="Title" placeholder="Title" /><br />
            <input asp-for="Location" placeholder="Location" /><br />
            <select asp-for="TypeOfHazard" size="1">
                    <option> Broken object </option>
                    <option> Dangerous Place </option>
                    <option> Lost Belongings </option>
            </select><br />
            <input asp-for="Description" placeholder="Description" /><br />
            <input asp-for="Status" placeholder="Status" /><br />
            <!--<input asp-for="File" />-->
            <button type="submit">Submit</button>
        </form>
    </div>
 
</body>
Report.cs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
 
namespace Nemesys.Models
{
    public class Report
    {
        public int ID { get; set; }
        public string Title { get; set; } = "";
        public DateTime DateOfReport { get; set; } = DateTime.UtcNow;
        public string Location { get; set; } = "";
        public DateTime DateAndTimeSpotted { get; set; } = DateTime.UtcNow;
        public string TypeOfHazard { get; set; } = "";
        public string Description { get; set; } = "";
        public string Status { get; set; } = "";
        public User Author { get; set; } = null;
        public string PhotoUrl { get; set; } = null;
        public int Upvotes { get; set; } = 0;
    }
}
Le controller (ReportController)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using Microsoft.AspNetCore.Mvc;
using Nemesys.Data.Repository;
using Nemesys.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
 
namespace Nemesys.Controllers
{
    public class ReportController : Controller
    {
        private IRepository _repo;
 
        public ReportController(IRepository repo)
        {
            _repo = repo;
        }
        public IActionResult ViewReports()
        {
            var posts = _repo.GetAllReports();
            return View(posts);
        }
        public IActionResult View_Specific_Report(int id)
        {
            var posts = _repo.GetReport(id);
            return View(posts);
        }
        [HttpGet]
        public IActionResult UploadReport(int? id)
        {
            if (id == null)
            {
                return View(new Report());
            }
            else
            {
                var post = _repo.GetReport((int)id);
                return View(post);
            }
        }
        [HttpPost]
        public async Task<IActionResult> UploadReport(Report report)
        {
            if (report.ID > 0)
            {
                _repo.UpdateReport(report);
            }
            else
            {
                _repo.AddReport(report);
            }
            if (await _repo.SaveChangesAsync())
            {
                return RedirectToAction("Index","Home");
            }
            else
                return View(report);
        }
        [HttpGet]
        public async Task<IActionResult> Remove(int id)
        {
            _repo.DeleteReport(id);
            await _repo.SaveChangesAsync();
            return RedirectToAction("Index","Home");
        }
    }
}
PS: En fait je sais qu'avec le @model je peux m'en sortir mais comme j'en ai déjà un dans mon .cshtml je suis un peu bloqué ^^.
Toute aide sera la bienvenue et hésitez pas à me dire si vous avez besoin de plus de parties de codes ou s'il y a des zones d'ombres
Bonne journée !