Это довольно повторяющаяся тема в StackOverflow, но еще раз я не могу заставить свое действие контроллера MVC распознавать данные, которые я пытаюсь отправить. Любые предложения с благодарностью получили.Дополнительные проблемы Ajax/MVC
Мои действия контроллера выглядит следующим образом:
[Authorize]
[HttpPost]
public JsonResult Record(int task, string notes, double hours)
{
Repository<TimeEntry> TimeRepo = new Repository<TimeEntry>();
...
Мой Ajax вызов выглядит следующим образом:
var Task = $('#time-task option:selected').val();
var Hours = parseFloat($('#time-hours').val());
var Notes = $('#txtNotes').val();
if (isNaN(Hours)) {
Hours = 0;
}
$.post('/Home/Record', { task: Task, notes: Notes, hours: Hours }, function (data) {
console.log(data);
});
И исключение Возвращается:
Словарь параметров содержит нулевая запись для параметра «задача» не-nullable типа 'System.Int32' f или метод 'System.Web.Mvc.JsonResult Запись (Int32, System.String, Double)' в 'JobTrack.Controllers.HomeController'. Необязательный параметр должен быть ссылочным типом , нулевым типом или быть , объявленным как необязательный параметр . Имя
Параметр: параметры
Там должно быть что-то основное, что я с видом, но проклят, если я могу понять, где я буду неправильно. Предложения оценены.
Обновление: Так что изменение $ .post на $ .ajax-вызов и использование этого вызова GET вместо POST, похоже, сработает. Полагаю, я могу жить с этим, но я бы предпочел сделать это правильно. Любые предложения относительно того, почему HTTP-глаголы должны иметь значение?
Ну, это была моя первая мысль, но я проверил в Firebug, и следующие данные находятся в Post Source: 'task = 1 & notes = & hours = 0'. Может быть, значение примечаний вызывает проблемы, но тогда я не думаю, что ASP.Net вызовет меня по значению «задача». –