Jamie888 Ответов: 2

Внутренняя ошибка сервера 500 по url: "/prawnfarm/updateprawnfarmdetail",


Привет, у меня есть приложение MVC, в котором я буду вызывать контроллер с помощью ajax. Я настроил все нормально, но когда я вызываю вызов ajax, я получаю внутреннюю ошибку сервера 500 от F12(Google Chrome). Я дважды проверил свои коды(javascript и C#) и, похоже, ничего плохого не произошло. Ниже приведены мои коды:

$.ajax({
    type: "POST",
    url: "/PrawnFarm/UpdatePrawnFarmDetail",
    data: {
        'pH': $ph,
        'salPerc': $salPerc,
        'salDeg': $salDeg,
        'doMG': $doMG,
        'doDeg': $doDeg,
        'water': $water,
        'rain': $rain,
        'pondId': $pondId,
    },
    success: function (data) {
    },
    fail: function (jqXHR, textStatus, errorThrown) {
    }
});


[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult UpdatePrawnFarmDetail(decimal pH, decimal salPerc, decimal salDeg, decimal doMG, decimal doDeg, int water, int rain, long pondId)
{
    using (DB_TestEntities db = new DB_TestEntities())
    {
        PrawnFarmDetail prawnFarmDetail = new PrawnFarmDetail();

        prawnFarmDetail.PH = pH;
        prawnFarmDetail.SAL_Percentage = salPerc;
        prawnFarmDetail.SAL_Degree = salDeg;
        prawnFarmDetail.DO_Volume = doMG;
        prawnFarmDetail.DO_Degree = doDeg;
        prawnFarmDetail.Water_Volume = water;
        prawnFarmDetail.RAIN = rain;
        prawnFarmDetail.PondId = pondId;

        db.SaveChanges();
    }
    return View();
}


Что я уже пробовал:

1. Отладки JavaScript и все значения правильно в плен.

F-ES Sitecore

Вам нужно сделать еще несколько отладок. Используйте инструменты браузера, чтобы посмотреть на ответ от вызова, и детали ошибки, вероятно, находятся там. Как уже упоминалось в решении 1, Ваш код ничего не делает, но это не приведет к ошибке 500. Может быть, представление по умолчанию не может быть найдено? Мы не можем отлаживать ваш код для вас, только вы можете это сделать.

Jamie888

Благодарю вас, сэр, за ваше предложение. Оказывается, моя проблема заключается в отсутствии маркера защиты от подделки в моем ajax-скрипте.

2 Ответов

Рейтинг:
4

Richard Deeming

Цитата:
[ValidateAntiForgeryToken]

Ваш AJAX-запрос не включает в себя маркер защиты от подделки. В результате сервер отклонит запрос.


Jamie888

Да, сэр, похоже, что это именно тот случай. Я изменил свой ajax-скрипт, и теперь все работает нормально. Спасибо.

Рейтинг:
2

Rajesh Anuhya

Я думаю, вы пропустили добавление объекта в контекст БД.

db.PrawnFarmDetail.Add(prawnFarmDetail) 

перед сохранением..

И я заметил, что имя метода-update. затем вы пытаетесь обновить сущность, сначала извлеките ее из базы данных и udpate, в данном случае
prawnFarmDetail
это не новый объект.

--РА


Jamie888

Спасибо вам, сэр, за вашу помощь. Оказывается, в моем вызове ajax отсутствует маркер защиты от подделки.