Сообщение $ .ajax на контроллер MVC возвращает внутреннюю ошибку сервера: словарь параметров содержит пустую запись - PullRequest
5 голосов
/ 17 февраля 2010

Словарь параметров содержит пустую запись для параметра 'appId' ненулевого типа 'System.Int32' для метода 'System.Web.Mvc.ContentResult CheckForInstaller (Int32)' в 'HLIT_TicketingMVC.Controllers.TicketController'. Необязательный параметр должен быть ссылочным типом, обнуляемым типом или быть объявлен как необязательный параметр.

function SubmitAjax(url, message, successFunc, errorFunc) {
  $.ajax({
    type:'POST',
    url:url,
    data:message,
    contentType: 'application/json; charset=utf-8',
    dataType: 'json',
    success:successFunc,
    error:errorFunc
  });
};

Объект данных построен следующим образом:

var message={"appId":application.val()};

Я также попробовал jsonified строку:

var message="{'appId':"+application.val()+"}";

и

var message="{'appId':'"+application.val()+"'}";

Я подтвердил, что сообщение передается с правильным значением int, прежде чем оно попытается опубликовать. Указатель мыши над отладчиком недавно показал: {appId="6"}

Подпись метода на контроллере:

public ContentResult CheckForInstaller(int appId)

Когда я удаляю параметр из сигнатуры метода, он попадает внутрь точки останова, так что это либо сигнатура, требующая каких-либо атрибутов, либо, как мне кажется, сообщение не выстроено должным образом.

Ответы [ 2 ]

9 голосов
/ 17 февраля 2010

Удалить это:

contentType: 'application/json; charset=utf-8',

MVC не собирается анализировать JSON в int. Вы хотите значение по умолчанию application/x-www-form-urlencoded.

2 голосов
/ 17 февраля 2010

Я думаю, может быть, вы отправляете json на контроллер, попробуйте это

function SubmitAjax(url, message, successFunc, errorFunc) {
  $.ajax({
    type:'POST',
    url:url,
    data:"appId=" + application.val(),//not sure where you get the value from in your current code  
    dataType: 'json',
    success:successFunc,
    error:errorFunc
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...