Frage

Ich versuche, eine serverseitige Aktion in einer Steuerung von jQuery zu nennen:

$.ajax({
            url:'http://localhost:88/admin/business/11/GetChildBusinessTypes',
            data: { parentId: $('#business_parentbusinesstype_id').val() },
            dataType: 'json',
            success: fillChildBusinessTypes,
            error: ajaxError
        });

Hier ist die Controller-Aktion:

public string GetChildBusinessTypes(int parentId)
        {
            //get child business types.
            var businessTypes = BusinessTypeRepository.GetChildBusinessTypes(parentId);
            //convert to JSON.
            var serializer = new JavaScriptSerializer();
            return serializer.Serialize(businessTypes);
        }

Es hat mir diesen Fehler geben:

Monorail konnte keinen Blick Engine-Instanz für die Vorlage ‚admin \ Geschäft \ GetChildBusinessTypes‘ Es gibt zwei mögliche Gründe lösen: entweder die Vorlage nicht vorhanden, oder die Ansicht Engine, die Griffe eine bestimmte Dateierweiterung nicht gewesen richtig konfiguriert web.config (Abschnitt Einschienenbahn, Knoten viewEngines).

Es ist klar, es versucht, die Aktion zu bekommen, als ob es eine Ansicht war und erroring aus. Ich versuchte, es als POST statt GET sendet aber die gleiche rror erhalten. Was muss ich tun dies, um Arbeit zu bekommen?

Danke! Justin

War es hilfreich?

Lösung

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