Это довольно повторяющаяся тема в StackOverflow, но еще раз я не могу заставить свое действие контроллера 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);
});
И возвращаемое исключение:
Словарь параметров содержит
пустая запись для параметра 'задача' из
необнуляемый тип 'System.Int32' для
метод 'System.Web.Mvc.JsonResult
Запись (Int32, System.String, Double) '
в
'JobTrack.Controllers.HomeController.
Необязательный параметр должен быть
ссылочный тип, обнуляемый тип или
объявлен необязательным
параметр.
Имя параметра:
параметры
Должно быть что-то простое, что я упускаю из виду, но, черт побери, могу ли я понять, где я иду не так. Предложения приветствуются.
Обновление: поэтому замена $ .post на вызов $ .ajax и использование этого вызова с использованием GET вместо POST, похоже, работает. Я полагаю, что могу жить с этим, но я бы предпочел сделать это правильно. Любые предложения о том, почему HTTP-глаголы должны иметь значение?