У меня есть простой контроллер:
public class UserCredentials
{
public string Username {get;set;}
public string Password {get;set;}
}
public class AuthenticationController : Controller
{
public ActionResult Authenticate(UserCredentials credentials)
{
// Do stuff
}
}
И простой кусочек Jquery:
var credentials = {
Username: "test",
Password: "test"
};
$("#send-request").button().click(function() {
var ajaxOptions = {
url: "http://localhost:29097/authentication/",
type: "POST",
dataType: 'json',
data: JSON.stringify(credentials),
contentType: "application/json; charset=utf-8",
success: function(result) { $("#result").html(result); }
};
$.ajax(ajaxOptions);
});
Всякий раз, когда я нажимаю кнопку на странице, чтобы отправить запрос, объект UserCredentials содержит null для обоих свойств ... Я пытался публиковать сообщения напрямую через Fiddler с JSON, но мне тоже не повезло ... мне нужно сделать что-нибудь особенное, чтобы заставить это работать?
- РЕДАКТИРОВАТЬ -
Я прошел двойную проверку, и кажется, что когда данные покидают клиента, они правильно содержат данные json в заголовке. Однако, когда фидлер берет его, он, кажется, не содержит данных, похоже, что он выполняет вызов OPTIONS:
OPTIONS http://localhost:29097/authentication/ HTTP/1.1
Host: localhost:29097
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type,x-requested-with
Если это поможет, я запускаю приложение MVC через Сервер разработки (думаю, оно называется Cassini)