Maison > développement back-end > C++ > Comment créer une liste déroulante en cascade dans ASP.NET MVC 3 à l'aide de C# ?

Comment créer une liste déroulante en cascade dans ASP.NET MVC 3 à l'aide de C# ?

Susan Sarandon
Libérer: 2025-01-11 15:41:43
original
714 Les gens l'ont consulté

How to Create a Cascading Dropdown in ASP.NET MVC 3 Using C#?

Création de menus déroulants en cascade dans ASP.NET MVC 3 à l'aide de C# : approche simplifiée

Présentation

Cet article fournit une méthode simple et facile pour créer des menus déroulants en cascade dans ASP.NET MVC 3 et C#.

Modèle

Tout d'abord, définissez une classe de modèle pour représenter les données de la vue :

<code class="language-csharp">public class MyViewModel
{
    public int? Year { get; set; }
    public int? Month { get; set; }

    public IEnumerable<SelectListItem> Years { get; set; }
}</code>
Copier après la connexion

Contrôleur

Le contrôleur gère le fonctionnement de deux menus déroulants :

<code class="language-csharp">public ActionResult Index()
{
    var model = new MyViewModel { Years = GetYears() }; //添加获取年份数据的调用
    return View(model);
}

private IEnumerable<SelectListItem> GetYears()
{
    //此处替换为你的年份数据获取逻辑,例如从数据库获取
    return Enumerable.Range(2010, 15).Select(year => new SelectListItem { Value = year.ToString(), Text = year.ToString() });
}

public ActionResult Months(int year)
{
    if (year == 2011)
    {
        return Json(Enumerable.Range(1, 3).Select(x => new { value = x, text = x }), JsonRequestBehavior.AllowGet);
    }
    return Json(Enumerable.Range(1, 12).Select(x => new { value = x, text = x }), JsonRequestBehavior.AllowGet);
}</code>
Copier après la connexion

Voir

La vue contient le menu déroulant et le code JavaScript qui implémente la fonctionnalité en cascade :

<code class="language-html">@model AppName.Models.MyViewModel

@Html.DropDownListFor(
    x => x.Year, 
    Model.Years,
    "-- 选择年份 --"
)

@Html.DropDownListFor(
    x => x.Month, 
    Enumerable.Empty<SelectListItem>(),
    "-- 选择月份 --"
)

<script>
    $('#Year').change(function () {
        var selectedYear = $(this).val();
        if (selectedYear != null && selectedYear != '') {
            $.getJSON('@Url.Action("Months")', { year: selectedYear }, function (months) {
                var monthsSelect = $('#Month');
                monthsSelect.empty();
                $.each(months, function (index, month) {
                    monthsSelect.append($('<option>', {
                        value: month.value,
                        text: month.text
                    }));
                });
            });
        }
    });
</script></code>
Copier après la connexion

Ce code modifié apporte de légers ajustements au modèle et ajoute des fonctions permettant d'obtenir les données annuelles du contrôleur, rendant le code plus clair et plus facile à maintenir et à étendre. Le JavaScript dans la vue a également été légèrement ajusté pour le rendre plus conforme. Veuillez vous assurer que les bibliothèques jQuery nécessaires sont correctement référencées dans votre projet.

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