IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Récupérer des string (déjà dans une table) pour les mettre dans un <form>


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2018
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2018
    Messages : 14
    Points : 8
    Points
    8
    Par défaut Récupérer des string (déjà dans une table) pour les mettre dans un <form>
    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 !

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Pour créer une combo tu peux passer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @Html.DropDownList("MyList", (IEnumerable<SelectListItem>)ViewData["MyList"])
    Et dans ton contrôleur, tu remplis ViewData de la manière que tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<SelectListItem>MyList = new List<SelectListItem>();
    ...
    ViewData["MyList "] = MyList;
    En fait, il y a plein de manière de procéder :
    https://www.c-sharpcorner.com/articl...n-aspnet-mvc5/

Discussions similaires

  1. Réponses: 15
    Dernier message: 17/03/2015, 22h42
  2. Réponses: 5
    Dernier message: 05/02/2013, 10h27
  3. Récupérer des noms de fichier dans une table pour les placer en masque du tfilelist
    Par charliplanete dans le forum Développement de jobs
    Réponses: 11
    Dernier message: 24/08/2011, 17h16
  4. Réponses: 11
    Dernier message: 22/06/2009, 09h58
  5. Réponses: 4
    Dernier message: 22/05/2007, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo