asp.net-core - 使用 Razor 页面的 Ajax 发布

标签 asp.net-core asp.net-ajax razor-pages

我正在使用 Asp.net Core Razor Pages,并希望在单击按钮时将一些数据发布到服务器,但我无法在调用方法中获取客户端值,它始终为空:

<button type="button" class="btn btn-primary" onclick="save1()">Submit</button>

我的js代码:

function save1() {
          var order = { SerialNo: '1'};

            $.ajax({
                type: "POST",
                url: "@Url.Page("Index","Save1")",
                headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
                data: JSON.stringify(order),
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function () {
                    alert('Success!');
                },
                failure: function (response) {
                    alert('error!');
                }
            });

        }

我的页面处理程序:

 public async Task<IActionResult> OnPostSave1Async(CreateOrderViewModel order)
    {
        //some code
    }

和我的 View 模型:

public class CreateOrderViewModel
{

    public string SerialNo { get; set; }
    ...
}

最佳答案

您可能需要添加 [FromBody] 来接收发送的值,如下所示:

型号:

       public class Test {
            public string SerialNo { get; set; }
            }

Controller :

 [HttpPost]
        public IActionResult Index([FromBody]Test order)
        {

            return View();
        }

        public IActionResult Index()
        {
            return View();
        }

查看:

<button type="button" class="btn btn-primary" onclick="save1()">Submit</button>
<script>
    function save1() {
        var order = { SerialNo: '1' };

            $.ajax({
                type: "POST",
                url: "test/Index",
                data: JSON.stringify(order),
                contentType: "application/json; charset=utf-8",
               dataType: "json",
                success: function () {
                alert('Success!');
                },
                failure: function (response) {
                alert('error!');
                }
                });

                }
</script>

结果:

enter image description here

关于asp.net-core - 使用 Razor 页面的 Ajax 发布,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69758377/

相关文章:

c# - 从 System.Text.Json 反序列化 NodaTime Instant

asp.net-ajax - ELMAH 没有在静态页面方法中捕获异常

c# - 如何返回带有状态码的响应 JSON 数据?

c# - 将我的应用程序迁移到 ASP.NET Core 3.0 后,之前有效的索引 URL 返回 404

c# - 在域子文件夹中的 Apache 后面托管 ASP.NET Core

c# - 传入 XML 大小写敏感问题

dependency-injection - AddScoped() 如何在 Asp.net 核心之外表现?

ASP.Net AJAX JavaScript 序列化错误

asp.net 2.0 asmx Web服务排除JSON响应中的类型

asp.net-core - 使用 httpClient.postasync 进行 Web api 调用 .netcore