ModelPage 函数接收空参数;如何解决这个问题?

问题描述 投票:0回答:1

我目前正在学习如何使用 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 函数接收的参数为空。我在调试过程中发现:

  • 网站控制台中没有 Javascript 错误
  • AJAX发送的数据有价值且正确; Payload Request 下的 console.log 命令和 Network 选项卡甚至会显示它们
  • 空异常是由SQL函数触发的,而不是之前的;不知何故,AJAX 中的 range1 和 range2 值在发送后变为 null

我尝试过使用或不使用 [FromBody] 和 JSON.stringify 运行代码,将 [HttpPost] 放在模型函数上,但仍然出现相同的错误。

非常感谢任何有关如何解决此问题的帮助。

javascript c# ajax .net-core
1个回答
0
投票

尝试修改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)
{
...}
© www.soinside.com 2019 - 2024. All rights reserved.