Maison > développement back-end > C++ > Comment lier une liste d'employés à une aide à tag de sélection dans ASP.NET Core MVC?

Comment lier une liste d'employés à une aide à tag de sélection dans ASP.NET Core MVC?

Barbara Streisand
Libérer: 2025-01-28 21:06:09
original
748 Les gens l'ont consulté

How to Bind a List of Employees to a Select Tag Helper in ASP.NET Core MVC?

ASP.NET CORE MVC SELECT TAG HELPER: listes de listes d'employés

Ce guide montre comment lier efficacement une liste d'employés à une aide à tag de sélection dans ASP.NET Core MVC, en veillant à ce que la valeur sélectionnée soit correctement cartographiée à la propriété EmployeeId.

Structure du modèle de visualisation:

Supposons que votre modèle de vue est structuré comme suit:

<code class="language-csharp">public class MyViewModel
{
    public int EmployeeId { get; set; }
    public string Comments { get; set; }
    public List<Employee> EmployeesList { get; set; }
}

public class Employee
{
    public int Id { get; set; }
    public string FullName { get; set; }
}</code>
Copier après la connexion

remplissant la liste de sélection:

La clé consiste à créer un objet SelectList à partir de votre EmployeesList et à l'utiliser dans votre vue. Voici comment vous pouvez le faire dans votre action de contrôleur:

<code class="language-csharp">public IActionResult Create()
{
    var vm = new MyViewModel();
    vm.EmployeesList = new List<Employee>
    {
        new Employee { Id = 1, FullName = "Shyju" },
        new Employee { Id = 2, FullName = "Bryan" }
    };
    return View(vm);
}</code>
Copier après la connexion

et à votre avis:

<code class="language-html"><select asp-for="EmployeeId" asp-items="@new SelectList(Model.EmployeesList, \"Id\", \"FullName\")"></select></code>
Copier après la connexion

Cela lie de manière concise le SelectList à la propriété EmployeeId, affichant FullName comme texte d'option et en utilisant Id comme valeur.

Pré-sélection un employé:

pour présélectionner un employé, définissez la propriété EmployeeId dans votre modèle de vue avant de la passer à la vue:

<code class="language-csharp">public IActionResult Create()
{
    var vm = new MyViewModel();
    vm.EmployeesList = new List<Employee> { /* ... your employees ... */ };
    vm.EmployeeId = 2; // Pre-selects Bryan
    return View(vm);
}</code>
Copier après la connexion

Alternative: Utilisation de Viewbag (moins recommandé):

Bien que possible, l'utilisation de ViewBag est généralement moins préférée en raison de sa nature dynamique et de son potentiel d'erreurs. Voici un exemple:

<code class="language-csharp">// Controller
ViewBag.Employees = new List<SelectListItem>
{
    new SelectListItem { Text = "Shyju", Value = "1" },
    new SelectListItem { Text = "Bryan", Value = "2" }
};

// View
<select asp-for="EmployeeId" asp-items="@ViewBag.Employees"></select></code>
Copier après la connexion

Scénarios avancés:

  • Sélection multiple: Utilisez un type de tableau ou de liste pour EmployeeId dans votre modèle de vue pour autoriser plusieurs sélections.
  • Groupement: Utilisez la propriété SelectListItem Group pour regrouper les options dans la liste déroulante.

N'oubliez pas de consulter la documentation officielle de Microsoft sur des aides à la balise sélectionnés pour des fonctionnalités et des options plus avancées. L'utilisation de l'approche SelectList directement de votre modèle est généralement plus propre et plus sûre que d'utiliser ViewBag.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal