Monorraíl - la forma de llamar al método del lado del servidor de jQuery

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

  •  05-10-2019
  •  | 
  •  

Pregunta

Estoy intentando llamar a una acción del lado del servidor en un controlador de jQuery:

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

Aquí está la acción del controlador:

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

Me está dando este error:

monorraíl podría no resolver una instancia de vista del motor de la plantilla 'admin \ Business \ GetChildBusinessTypes' Hay dos razones posibles: o bien la plantilla no existe, o el motor de vista de que los mangos de una extensión de archivo específico no ha sido configurado correctamente web.config (sección monorraíl, viewEngines de nodo).

Está claro que está tratando de obtener la acción como si se tratara de una vista y erroring a cabo. He intentado enviarlo como un puesto en lugar de un GET, pero reciben el mismo rror. ¿Qué necesito hacer para conseguir que esto funcione?

Gracias! Justin

¿Fue útil?

Solución

Aquí está la respuesta para otros que están mirando para llamar a acciones del controlador de jQuery y JSON retorno ...

Método de controlador:

[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'));
    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top