Monorail - Wählen Sie übergeordnete Kategorie aus einer Dropdown-Liste anzeigen Kind Kategorie Dropdown

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

  •  04-10-2019
  •  | 
  •  

Frage

Ich bin neu in Monorail und ich versuche, herauszufinden, wie es zu haben, so dass ich eine übergeordnete Kategorie in einem Dropdown auswählen können, dann ist es eine zweite Dropdown mit den Kategorien zeigen, haben die Kinder der Eltern sind.

Wenn ich mit, was ich gewohnt bin, ASP.NET MVC, würde ich eine Javascript-Funktion, die Onchange der ersten Dropdown aufgerufen werden und würde einen Ajax-Aufruf zu einer Controller-Methode (vorbei in den ausgewählten Eltern machen Kategorie-ID), die alle untergeordneten Kategorien dieser Hauptkategorie greifen würden und sie in JSON zurück. Dann in der Callback-JavaScript-Funktion würde ich die JSON eval und die zweite Dropdown mit den untergeordneten Kategorien füllen.

Wie würde ich dies mit Monorail / jQuery tun? Hier ist der Code Ich habe so weit:

$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'}")

Dann in BusinessController.cs:

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

Vielen Dank für jede Eingabe, wie dies zu nähern!

Justin

War es hilfreich?

Andere Tipps

Hier ist die Antwort für andere, die suchen Controller-Aktionen von jQuery und Rückkehr JSON ...

nennen

Controller-Methode:

[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'));
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top