Я получаю то, что я считаю странной проблемой связывания в ASP.NET MVC 4 RC Web API. У меня есть метод, предназначенный для приема почтовых запросов от клиента. Проблема в том, что ни один из параметров не является обязательным при вызове метода post, я добираюсь до точки прерывания строки и имени броска, а также по электронной почте. Если я изменяю тип запроса GET в JavaScript, то функция Get ниже вызывается с привязанными параметрами.ASP.NET MVC 4 RC Web API Параметр Binding Issue
Почему параметры не связаны для метода Post, и как я могу это исправить?
send: function(evt) {
evt.preventDefault();
$.ajax({
url: '/api/person',
data: this.model.toJSON(),
type: "POST",
dataType: "json",
success: function(data) {
console.log("Success");
},
error: function(data) {
console.log("Error");
}
});
}
Ниже действия регулятора:
public void Get(string name, string email) {
throw new NotImplementedException();
}
public void Post(string name, string email) {
throw new NotImplementedException();
}
Примечания:
- Я использую все настройки по умолчанию для ASP.NET MVC 4 RC Web API (так десериализатор должен быть Json.NET)
- Вкладка «Сеть Chrome» на отладчике JS правильно отображает параметры в данных формы в сообщении.
Мой параметр get не пусто, на самом деле он даже не существует. Возможно, я не был ясен, но только там можно проиллюстрировать, что функциональность работает в GET и не работает в POST. – Cody
Хорошо - хорошо, тогда это нормально :). Короче говоря, если вы связываете несколько параметров с телом запроса, в основном проще всего написать простой тип модели, как я показал. –
Спасибо за ссылку на статью Майка Столла, это было очень информативно о том, что происходит. Я только что предположил, что Web API использует ту же стратегию привязки, что и MVC. Создание пользовательского класса для получения параметров работало как прелесть, я не поклонник этого решения, но я не могу понять, почему, поэтому я, вероятно, просто упрям. :) В любом случае это решение, которое я буду использовать. Благодаря!:) – Cody