Monorail - Choisir catégorie parente d'un menu déroulant, Afficher la liste déroulante catégorie enfant

StackOverflow https://stackoverflow.com/questions/2917880

  •  04-10-2019
  •  | 
  •  

Question

Je suis nouveau monorail et essaie de comprendre comment l'avoir pour que je puisse sélectionner une catégorie parente dans un menu déroulant puis l'ont montre une seconde liste déroulante avec les catégories qui sont les enfants du parent.

Si j'utilisais ce que je suis habitué, ASP.NET MVC, j'avoir une fonction javascript qui serait appelé onchange du premier menu déroulant et ferait un appel ajax à une méthode de commande (en passant dans le parent sélectionné catégorie id) qui saisir toutes les catégories d'enfants de cette catégorie mère et les retourner dans JSON. Ensuite, dans la fonction javascript de rappel J'eval JSON et peupler la seconde liste déroulante avec les catégories enfants.

Comment puis-je faire cela en utilisant monorail / jQuery? Voici le code que j'ai à ce jour:

$FormHelper.Select("business.category.id", $categories, "%{value='id', text='name', firstoption='Select a Category'}")

$FormHelper.Select("business.category.id", $childCategories, "%{value='id', text='name', firstoption='Select a Sub-Category'}")

Ensuite, dans BusinessController.cs:

private void AddDataToModels()
        {
            PropertyBag["categories"] = CategoryRepository.GetParentCategories();
            PropertyBag["childCategories"] = CategoryRepository.GetChildCategories(1);
}

Merci pour toute entrée sur la façon d'aborder cela!

Justin

Était-ce utile?

Autres conseils

Voici la réponse pour les autres qui cherchent à appeler les actions du contrôleur de jQuery et retour JSON ...

contrôleur Méthode:

[return: JSONReturnBinder(Properties = "Id,Name")]
        public BusinessType[] GetChildBusinessTypes(int parentId)
        {
            var businessTypes = BusinessTypeRepository.GetChildBusinessTypes(parentId);
            return businessTypes;
        }

Javascript:

$(document).ready(function () {
        $('#business_parentbusinesstype_id').change(function () {
            jQuery.ajax({
                url: "$UrlHelper.For("%{action='$business.site.id/GetChildBusinessTypes'}")",
                data: { parentId: $('#business_parentbusinesstype_id').val() },
                dataType: 'json',
                type: 'GET',
                success: fillChildBusinessTypes,
                error: ajaxError
            });
        });
    });

    function fillChildBusinessTypes(json) {
        //get business types.
        var businessTypes = eval(json);
        //bind business types to dropdown.
        $("#business_businesstype_id").get(0).options.length = 0;
        $("#business_businesstype_id").get(0).options[0] = new Option("Select a Business Type", "0");
        jQuery.each(businessTypes, function(index, item) {
            $('#business_businesstype_id').get(0).options[$("#business_businesstype_id").get(0).options.length] = new Option(item.Name, item.Id);
        });
        //show child dropdown.
        Show($('#spnChildBusinessTypes'));
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top