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

时间:2018-09-13 11:05:35

标签: razor asp.net-core razor-pages

我正在使用.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();
}

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

1 个答案:

答案 0 :(得分:3)

您的问题有点难以理解,但我认为您遇到的问题是无法理解请求管道的工作原理。您的PageModel在此处随每个请求实例化,并在返回响应时置于该请求的末尾。发出新请求时,您将拥有一个全新的实例,因此,您以前在此处设置为Inputs之类的属性的一切似乎都从未发生过。如果要在请求之间保留某些内容,则实际上需要将其保留在某个地方。就像使用Session或实际上将某些内容保存到数据库或其他商店中一样简单。