razor - 在 .net 核心上发布后对象丢失
问题描述
我正在使用 .Net Core Razor 页面开发一个小型 Web 应用程序,而且我对使用它还是很陌生。
我有一个分配了 [BindProperty] 属性的对象,它基本上描述了用于登录数据库的用户登录名和密码,以及一些我尚未设置的其他详细信息。
在 OnGet() 方法中设置对象并返回页面。
现在,他们按下连接并成功连接到数据库,一切都很好,他们成功连接到数据库,并向用户显示更多信息。
我还有一个断开连接按钮,它应该从对象中删除连接到数据库的所有详细信息,但是当我单击断开连接按钮时,对象现在为空并丢失。
这是一个问题,因为它就像值保存在第一篇文章中,但它们没有保存在第二篇文章中,甚至存在于第二篇文章中。
同样,我是 .net core 的新手,我确信我犯了一些新手错误,但我看不到,谢谢大家。
[BindProperty]
public CreatorInputs Inputs { get; set; }
public async Task<IActionResult> OnGetAsync()
{
Inputs = new CreatorInputs();
return Page();
}
public async Task<IActionResult> OnPostConnectToDatabase()
{
// Assign values to connect to database
// Connect to database successfully
// Add data from the database to be displayed to user
return Page();
}
* Inputs is not null when we finish this method
* Inputs is null when we hit this method
public Task<IActionResult> OnPostDisconnectFromDatabase()
{
Inputs = null;
return OnGetAsync();
}
我确定这只是我的理解中的一个错误,但我看不出是什么。
解决方案
您的问题有点难以理解,但我认为您遇到的问题归结为不了解请求管道的工作原理。您的PageModel
此处会随每个请求进行实例化,并在返回响应时在所述请求结束时处理。当您提出新请求时,您将拥有一个全新的实例,因此您之前设置为像Inputs
这里这样的属性的任何内容都好像从未发生过一样。如果您试图在请求之间保留某些内容,则实际上需要将其保留在某个地方。这可能就像使用Session
或实际将某些内容保存到数据库或其他存储一样简单。
推荐阅读
- excel - 从欧元数据快速格式化/转换 Excel 中的数千个空格分隔符数字
- excel - 如何将日期作为变量放入 VBA 的公式中?
- c# - 绑定到从另一个属性中提取数据的属性
- python - 如何找到此 python 包 (__main__) 的详细信息?
- angular - 检索单个对象 Firebase Angular
- python - Python Spyne,返回数组
- java - 包含方法似乎不适用于我的多边形内的点
- java - JavaFX 上下文菜单项组
- java - spring boot sql 数据库 DML 和 DDL 脚本
- c# - 是否只有在执行的前台线程数小于处理器数时才执行后台线程?