JsonResult возвращает jtml представления, а не сериализованный объект при вызове из jQuery Get () - PullRequest
0 голосов
/ 25 июня 2009

Я пытаюсь получить сериализованный объект json из пользовательского элемента управления MVC, используя jQuery. Проблема в том, что возвращающийся результат - полный HTML-код страницы, содержащей мой элемент управления. Страница и элемент управления используют один и тот же контроллер. Я попытался взломать метод, который я вызываю в контроллере, и он никогда не попадал в цель. Я пробовал разные варианты вызовов jQuery Ajax и получал тот же результат.

JQuery код:

<script type="text/javascript">
$('#Project_GeneralContractor_Id').change(function() {
    //alert('<%= Url.Action("GetGeneralContractor", "Projects") %>/1');
    $.get('<%= Url.Action("GetGeneralContractor", "Projects") %>', { id: $('#Project_GeneralContractor_Id').val() }, function(data) {
        alert(data);
    });
});
</script>

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

public JsonResult GetGeneralContractor(int id)
{
    return Json(_GeneralContractorRepository.Get(id));
}

Где $ ('# Project_GeneralContractor_Id') - это раскрывающийся список, а _GeneralContractorRepository.Get (id) возвращает отдельный объект GeneralContractor.

Не уверен, что у меня происходит, но я подозреваю, что сторона jQuery, так как у меня не получается сломать контроллер.

Ответы [ 3 ]

0 голосов
/ 25 июня 2009

Вы пытались использовать getJSON () ?

Если это не так, я склоняюсь к проблеме со стороны сервера. Трудно догадаться, не смотря на возвращаемую страницу.

0 голосов
/ 25 июня 2009

Это была проблема маршрутизации. В контроллере «Мои проекты» есть несколько особых вариантов маршрута. Я создал отдельный контроллер для управления GeneralContractors и все хорошо.

0 голосов
/ 25 июня 2009

Вам необходимо указать тип: json (четвертый необязательный параметр для $ .get). См. $. Получить аргументы .

 $.get('<%= Url.Action("GetGeneralContractor", "Projects") %>', { id: $('#Project_GeneralContractor_Id').val() }, function(data) {
        alert(data);
    }, "json");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...