В моем веб-приложении я пытаюсь вызвать действие контроллера через запрос Ajax, поскольку я хочу обновить только частичное представление на моей странице, а не всю страницу. Все работает правильно (частичное представление возвращается без обновления основного представления), за исключением того, что частичное представление возвращает неправильные значения. После некоторой отладки я обнаружил, что ошибка связана с операторами запроса в действии контроллера. Когда действие контроллера вызывается отправкой обычной формы, запросы могут получить значения ввода пользователя, но не тогда, когда я вызываю контроллер с помощью запроса Ajax; они просто возвращают нулевые значения.
Пожалуйста, посмотрите пример ниже, это гораздо упрощенная версия того, с чем я столкнулся. При использовании Ajax общая сумма всегда равна 0 из-за сбоя команд синтаксического анализа с нулевым значением.
Контроллер:
Код: Выделить всё
[HttpPost]
public ActionResult Calculate() {
ViewBag.Total = 0;
for(int i = 1; i < 10; i++) { // max number of Frames that users can add is 10
string FrameNumber = i.ToString;
try {
string rawValue1 = Request["input1_Frame" + FrameNumber];
string rawValue2 = Request["input2_Frame" + FrameNumber];
decimal Value1 = decimal.Parse(rawValue1);
decimal Value2 = decimal.Parse(rawValue2);
ViewBag.Total += Value1 + Value2;
} catch {
break;
}
return PartialView("Banner");
}
Код: Выделить всё
$("#calculate").on("click", function () {
$.ajax({
cache: false,
dataType: 'text',
type: "POST",
url: "/Home/Calculate",
success: function (data) {
$(".banner").html(data);
},
error: function () {
alert("Something went wrong in the controller");
}
});
return false;
})
Код: Выделить всё
Calculate Total
Код: Выделить всё
Total:
@ViewBag.Total
Подробнее здесь: https://stackoverflow.com/questions/458 ... -ajax-call
Мобильная версия