微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过RedirectToPage调用后,ASP.NET Core Razor Pages中返回Page不会呈现该页面

如何解决通过RedirectToPage调用后,ASP.NET Core Razor Pages中返回Page不会呈现该页面

我是ASP.NET Core Razor Pages的新手。

在索引页面中,我获取了客户数据,并通过CustomerController中的ajax将其显示在jQuery数据表中。在最后一列中有删除按钮。通过这些按钮,我在CustomerController中调用了delete方法

JS Ajax文件

$(document).ready(function() {
$("#customerDataTable").dataTable({
    "processing": true,"serverSide": true,"filter": true,"ajax": {
        "url": "/api/customer","type": "post","datatype": "json"
    },"columnDefs":[
        {
            "targets": [0],"visible": false,"searchable": false
        }],"columns":[
        { "data": "id","name": "Id","autoWidth": true },{ "data": "firstName","name": "First Name",{ "data": "lastName","name": "Last Name",{ "data": "contact","name": "Contact",{ "data": "email","name": "Email",{ "data": "dateOfBirth","name": "Date Of Birth",{
            "render": function(data,type,row) {
                return "<a href='#' class='btn btn-danger' onclick=deleteCustomer('" + row.id + "'); 
        >Delete</a>"; }
                 }]
        });
    });

  function deleteCustomer(id) {
         $.ajax({
            url: "/api/customer",type: "GET",data: id
         });
    }

在CustomerContoller中,我想使用参数重定向到DeleteCustomer剃刀页面

    [HttpGet]
    public IActionResult DeleteCustomer()
    {
        var id = Request.Query.Keys.ToList()[0];
        return RedirectToPage("/DeleteCustomer",new{id});
    }

在DeleteCustomer页面中,有一个简单的get方法

    [BindProperty]
    public int CustomerId { get; set; }

    public IActionResult OnGet(string id)
    {
        CustomerId = int.Parse(id);
        return Page();
    }

当我逐行调试应用程序时,将CustomerControll正确重定向到DeleteCustomer页面,并且页面中的OnGet方法返回Page()方法,但浏览器不会呈现页面的HTML部分而没有任何错误。 Just Index页面仍与数据表一起显示

如果我在地址栏中调用DeleteCustomer页面,则会显示DeleteCustomer页面

为什么在浏览器中通过RedirectToPage调用后,返回的Page()无法呈现和显示页面

解决方法

为什么在浏览器中通过RedirectToPage调用后,返回的Page()无法呈现和显示页面?

您从客户端发出Ajax请求,该请求不会自动重新加载/刷新页面。要显示返回的页面内容,您可以尝试在成功回调函数中动态编写它,如下所示。

$.ajax({
    url: "/api/customer",type: "GET",data: id,success: function (res) {
        //console.log(res);
        document.write(res);
    }
});

此外,您还可以尝试修改方法,以使您的API操作DeleteCustomer返回ID,然后在客户端进行重定向,如下所示。

[HttpGet]
public IActionResult DeleteCustomer()
{
    //your code logic here

    //var id = Request.Query["id"];
    //return RedirectToPage("/DeleteCustomer",new { id });

    return Ok(new { id });
} 

在客户端

success: function (res) {
    console.log(res.id[0]);

    window.location.assign("/DeleteCustomer?id=" + res.id[0]);
    //document.write(res);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。