asp.net core 通过ajax调用后台方法(非api)

1、    在Startup.cs文件中添加:        services.AddMvc();
            services.AddAntiforgery(o => o.HeaderName = "XSRF-TOKEN");

2、在cshtml 文件中添加:

@Html.AntiForgeryToken()

@{await Html.RenderPartialAsync("_ValidationScriptsPartial");}

3、前端代码

$('#btnPost').on('click', function () {
            var item1 = $('#txtItem1').val();
            var item2 = $('#txtItem2').val();
            $.ajax({
                type: "POST",
                url: "RoleMenu?handler=Send",
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("XSRF-TOKEN",
                        $('input:hidden[name="__RequestVerificationToken"]').val());
                },
                data: JSON.stringify({
                    id: item1,
                    name: item2,
                }),

                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: function (response) {
                    var dvItems = $("#dvPostItems");
                    dvItems.empty();
                    $.each(response, function (i, item) {
                        var $tr = $('<li>').append(item).appendTo(dvItems);
                    });
                },
                failure: function (response) {
                    alert(response);
                }
            });

后台代码:

public ActionResult OnPostSend()
        {
            string sPostValue1 = "";
            string sPostValue2 = "";
            {
                MemoryStream stream = new MemoryStream();
                Request.Body.CopyTo(stream);
                stream.Position = 0;
                using (StreamReader reader = new StreamReader(stream))
                {
                    string requestBody = reader.ReadToEnd();
                    if (requestBody.Length > 0)
                    {
                        var obj = JsonConvert.DeserializeObject<TmpRoleMenu>(requestBody);
                        if (obj != null)
                        {
                            sPostValue1 = obj.id+"postdata";
                            sPostValue2 = obj.name+"postdata";
                        }
                    }
                }
            }
            List<string> lstString = new List<string>
            {
                sPostValue1,
                sPostValue2,
            };
            return new JsonResult(lstString);
        }

 参考:

1、http://www.jb51.net/article/133437.htm

原文地址:https://www.cnblogs.com/mebius4789/p/8685755.html