在 .net 核心上 post 后对象丢失

Object being lost after post on .net core

我正在使用 .Net Core Razor 页面开发一个小型 Web 应用程序,我对它的使用还很陌生。

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

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

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

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

这是个问题,因为好像值保存在第一个 post 上,但它们没有保存在第二个 post 上,甚至在第二个 post 上不存在.

同样,我是 .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 或实际将某些内容保存到数据库或其他存储一样简单。