Регистрация JSON к контроллеру

У меня есть это в моем контроллере:

    [HttpPost]
    public void UpdateLanguagePreference(string languageTag)
    {
        if (string.IsNullOrEmpty(languageTag))
        {
            throw new ArgumentNullException("languageTag");
        }

        ...
    }

И имейте эту РЕГИСТРАЦИЮ кода jQuery на контроллер:

           jQuery.ajax({
                type: 'POST',
                url: '/Config/UpdateLanguagePreference',
                contentType: 'application/json; charset=utf-8',
                data: '{ "languageTag": "' + selectedLanguage + '" }'
            });

Когда я пробую к коду, однако, я получаю ошибку:

Server Error in '/' Application.
Value cannot be null.
Parameter name: languageTag

В чем проблема? Разве это не то, как к POST JSON к Контроллеру MVC? Я могу исследовать POST с помощью Скрипача и видеть, что запрос корректен. По некоторым причинам, UpdateLanguagePreference() получает пустую или пустую строку.

5
задан Robert 15 April 2014 в 11:48
поделиться

2 ответа

hmm....

Я делаю это

 $.post(target,
         {
             "ProblemId": id,
             "Status": update
         }, ProcessPostResult);

с

public class ProblemReportUpdate
    {
        public int ProblemId { get; set; }
        public string Status { get; set; }
    }

и

 [HttpPost]
 public ActionResult UpdateProblemReport(ProblemReportUpdate update)

цель задается

var target = '<%=Url.Action("UpdateProblemReport", "ProblemReport") %>
1
ответ дан 13 December 2019 в 22:03
поделиться

Вы отправляете строку, а не объект JSONified.

data: '{"languageTag": "' + selectedLanguage + '"}'

должно быть

data: {"languageTag": selectedLanguage}

И убедитесь, что selectedLanguage определен в пределах ваш вызов ajax.

1
ответ дан 13 December 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: