我目前正在学习如何使用 AJAX 将值传递给 Post 方法,但没有成功;这是在 .NET Core 6 Razor Pages 中,代码如下。
前端:
function calculateSalary() {
var dropdown = document.getElementById("industryDropdown");
var selectedOption = dropdown.options[dropdown.selectedIndex];
var industryrange1, industryrange2;
industryrange1 = selectedOption.getAttribute('data-range1');
industryrange2 = selectedOption.getAttribute('data-range2');
var range1Value = String(industryrange1);
var range2Value = String(industryrange2);
console.log(range1Value);
console.log(range2Value);
try {
$.ajax({
type: 'POST',
headers: {RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()},
url: '/Index?handler=Calculate', // Replace with the actual path to your Razor Page method
contentType: 'application/json;charset=utf-8',
dataType: 'json',
data: JSON.stringify({ range1: range1Value, range2: range2Value }),
success: function (result) {
// Update the value of the textbox with the result
console.log(result);
$('#Message').val(result);
},
error: function (error) {
alert('Error:', error);
}
});
}
catch (error) {
console.error(error);
}
}
单击按钮时,此 AJAX 方法会将 2 个值传递给模型页面中的函数。所讨论的模型函数如下:
public IActionResult OnPostCalculate([FromBody] string range1, [FromBody] string range2)
{
var monthly_credit = employeeRepository.GetContribution(range1, range2);
foreach (var credit in monthly_credit)
{
Message = $"SSS Contribution = {credit}";
}
return new JsonResult(Message);
}
理想情况下,此函数将传递从 AJAX 接收的值并将其发送到另一个处理从 SQL 表检索数据的函数,将值放入字符串 Message 变量中,并让该字符串显示在网站的文本框中。
SQL函数代码如下:
public IEnumerable<SSS> GetContribution([FromBody] string range1, [FromBody] string range2)
{
double parsedRange1 = double.Parse(range1);
double parsedRange2 = double.Parse(range2);
//SQL code that returns values from tables
}
我尝试过的问题和解决方案
我没有包含 SQL 代码的原因是因为模型和 SQL 函数接收的参数为空。我在调试过程中发现:
我尝试过使用或不使用 [FromBody] 和 JSON.stringify 运行代码,将 [HttpPost] 放在模型函数上,但仍然出现相同的错误。
非常感谢任何有关如何解决此问题的帮助。
尝试修改ajax代码:
$.ajax({
type: 'POST',
headers: {RequestVerificationToken: $('input:hidden[name="__RequestVerificationToken"]').val()},
url: '/Index?handler=Calculate', // Replace with the actual path to your Razor Page method
data: { range1: range1Value, range2: range2Value },
success: function (result) {
// Update the value of the textbox with the result
console.log(result);
$('#Message').val(result);
},
error: function (error) {
alert('Error:', error);
}
});
然后:
public IActionResult OnPostCalculate( string range1, string range2)
{
...}