如何解决通过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 举报,一经查实,本站将立刻删除。