Монорельс - как вызвать метод Server-Side от jQuery

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

  •  05-10-2019
  •  | 
  •  

Вопрос

Я пытаюсь вызвать боковое действие на сервер в контроллере от jQuery:

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

Вот действие контроллера:

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

Это дает мне эту ошибку:

Монорельс не может решить экземпляр просмотра двигателя для шаблона «admin business getchildbusinesstypes» Есть две возможные причины: либо шаблон не существует, либо двигатель View, который обрабатывает определенное расширение файла, не был настроен правильно, Web.config Раздел монорельсы, узла ViewEngines).

Понятно, что он пытается получить действие, как если бы это было представление и ошибка. Я пытался отправить его как пост вместо того, чтобы получить, но получить тот же RROR. Что мне нужно сделать, чтобы сделать это на работу?

Спасибо! Джастин

Это было полезно?

Решение

Вот ответ для других, которые стремятся позвонить в контроллерные действия от JQuery и вернуть JSON ...

Метод контроллера:

[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'));
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top