在.net核心上发布后丢失对象

问题描述 投票:0回答:1

我正在使用.Net Core Razor页面开发一个小型Web应用程序,我很擅长使用它。

我有一个分配了[BindProperty]属性的对象,它基本上描述了用户登录数据库的登录名和密码,还有一些我尚未设置的其他细节。

该对象在OnGet()方法中设置,并返回页面。

现在,他们按下连接并成功连接到数据库,一切正常,他们成功连接到数据库,并向用户显示更多信息。

我还有一个断开连接按钮,它应该删除从对象连接到数据库的所有细节,但是当我单击断开连接按钮时,该对象现在为空并丢失。

这是一个问题,因为它就像在第一篇文章中保存了值,但它们没有保存在第二篇文章中,甚至不存在于第二篇文章中。

再说一遍,我是.net核心的新手,我确信我犯了一些菜鸟错误,但是我看不到它,谢谢大家。

[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();
}

我确信这只是我的理解中的一个错误,但我看不出是什么。

razor asp.net-core razor-pages
1个回答
3
投票

您的问题有点难以理解,但我认为您遇到的问题是不了解请求管道的工作原理。这里的PageModel会在每次请求时被实例化,并在返回响应时在所述请求结束时处理。当你提出一个新的请求时,你会有一个全新的实例,所以你以前在这里设置像Inputs这样的属性的任何东西都好像从未发生过。如果你试图在请求之间保持某种东西,你实际上需要在某个地方坚持它。这可能就像使用Session或实际将某些内容保存到数据库或其他商店一样简单。

© www.soinside.com 2019 - 2024. All rights reserved.