У меня есть это в моем контроллере:
[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()
получает пустую или пустую строку.
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") %>
Вы отправляете строку, а не объект JSONified.
data: '{"languageTag": "' + selectedLanguage + '"}'
должно быть
data: {"languageTag": selectedLanguage}
И убедитесь, что selectedLanguage определен в пределах ваш вызов ajax.