#c# #ajax #api #asp.net-core #model-view-controller
Вопрос:
Я пытаюсь вызвать метод контроллера API с помощью ajax и передать некоторые параметры. Вызывается метод api, но значения в методе контроллера равны нулю.
Используя тот же вызов ajax, другой контроллер (не контроллер api), имеющий тот же метод, получает значения параметров и возвращает результаты, но я застрял с передачей значений в метод контроллера api. Пожалуйста, помогите
$(document).ready(function ()
{
$("#DropDownName").change(function ()
{
$.ajax({
type: "POST",
dataType: "text",
url: "@(Url.Action("SampleAction", "XYZController"))",
data: {
"param1": $("#DropDownName :selected").val(),
"param2": $("#input2").val(),
"param3": $("#input3").val()
},
success: function (response) {
document.getElementById("result").textContent = "Result: " response;
},
});
});
});
Способ контроллера API
[Route("api/[controller]")]
[ApiController]
public class XYZController : ControllerBase
{
[ActionName("SampleAction")]
[HttpPost]
public decimal SampleAction(string dropdownselectedvalue,decimal input2, int input3)
{
//code here - This method is getting called but getting null parameter values
}
}
Ответ №1:
Измените свой ajax, как показано ниже:
data: {
"dropdownselectedvalue":$("#DropDownName :selected").val(),
"input2": $("#input2").val(),
"input3": $("#input3").val(),
},
Обязательно добавьте FromForm
свой внутренний код:
[Route("api/[controller]")]
[ApiController]
public class XYZController : ControllerBase
{
[ActionName("SampleAction")]
[HttpPost]
public decimal SampleAction([FromForm]string dropdownselectedvalue,
[FromForm] decimal input2, [FromForm] int input3)
{
return input2;
//code here - This method is getting called but getting null parameter values
}
}
Комментарии:
1. [FromForm] заставил это сработать. Первая часть была верна в реальном коде. Я поместил здесь несколько фиктивных имен для параметров.