Question

Je suis en train d'appeler une action côté serveur dans un contrôleur de jQuery:

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

Voici l'action du contrôleur:

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);
        }

Il me donne cette erreur:

monorail ne pouvait pas résoudre une instance du moteur d'affichage pour le modèle « admin \ business \ GetChildBusinessTypes » Il y a deux raisons possibles: soit le modèle n'existe pas, ou le moteur de vue que les poignées une extension de fichier spécifique n'a pas été web.config correctement configuré (monorail de section, viewEngines de noeud).

Il est clair qu'il tente d'obtenir l'action comme si elle était une vue et la moindre erreur. J'ai essayé de l'envoyer comme POST au lieu d'un GET, mais recevoir le même rror. Que dois-je faire pour que cela fonctionne?

Merci! Justin

Était-ce utile?

La solution

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