Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Razor 对象在.net core上发布后丢失_Razor_Asp.net Core_Razor Pages - Fatal编程技术网

Razor 对象在.net core上发布后丢失

Razor 对象在.net core上发布后丢失,razor,asp.net-core,razor-pages,Razor,Asp.net Core,Razor Pages,我正在使用.NETCoreRazor页面开发一个小的web应用程序,我对使用它很陌生 我有一个对象分配了[BindProperty]属性,它基本上描述了用户登录数据库的登录名和密码,还有一些我还没有设置的其他细节 对象在OnGet()方法中设置,并返回页面 现在,他们按下connect并成功连接到数据库,一切正常,他们成功连接到数据库,并向用户显示更多信息 我还有一个断开连接按钮,它应该会从对象中删除连接到数据库的所有详细信息,但是当我单击断开连接按钮时,对象现在为空并且丢失 这是一个问题,因为

我正在使用.NETCoreRazor页面开发一个小的web应用程序,我对使用它很陌生

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

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

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

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

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

再一次,我是.NETCore的新手,我肯定我犯了一些新手错误,但我看不出来,谢谢大家

[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();
}
[BindProperty]
公共创建者输入输入{get;set;}
公共异步任务OnGetAsync()
{
输入=新的创建者输入();
返回页();
}
PostConnectionToDatabase()上的公共异步任务
{
//指定要连接到数据库的值
//成功连接到数据库
//添加数据库中要显示给用户的数据
返回页();
}
*完成此方法时,输入不为null
*当我们点击这个方法时,输入是空的
公共任务OnPostDisconnectFromDatabase()
{
输入=空;
返回OnGetAsync();
}

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

您的问题有点难理解,但我认为您遇到的问题是不理解请求管道是如何工作的。您的
PageModel
在这里与每个请求一起实例化,并在响应返回时在所述请求结束时处理。当您发出一个新请求时,您有一个全新的实例,因此您以前设置为属性(如
Inputs
)的任何内容都好像从未发生过一样。如果您试图在请求之间持久化某些内容,实际上需要在某个地方持久化它。这可能很简单,比如使用
会话
,或者实际将某些内容保存到数据库或其他存储。

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

对不起,我不擅长解释。我认为BindProperty就是要这么做的,所以输入被保存在POST上?类似于此链接的一点说明:@DubDub
[BindProperty]
仅适用于单个请求-它只是从请求本身获取值,并将它们绑定到您的
输入
对象。你在这里的第二个请求不包括这些值,因此它们不能被绑定。谢谢你,柯克,我怀疑它可能会这样做。假设我在寻找一种解释,而不是另一种选择。不过克里斯建议的替代方案奏效了,谢谢大家。对不起,我不擅长解释。我认为BindProperty就是要这么做的,所以输入被保存在POST上?类似于此链接的一点说明:@DubDub
[BindProperty]
仅适用于单个请求-它只是从请求本身获取值,并将它们绑定到您的
输入
对象。你在这里的第二个请求不包括这些值,因此它们不能被绑定。谢谢你,柯克,我怀疑它可能会这样做。假设我在寻找一种解释,而不是另一种选择。然而,克里斯建议的替代方案奏效了,所以谢谢大家。您对断开按钮的预期结果是什么?对于您的代码,您可以初始化
输入
,这意味着当您通过
Get
方法进行请求时,它将始终是新的空对象。断开按钮的预期结果是什么?对于您的代码,您可以初始化
输入
,这意味着当您通过
Get
方法进行请求时,它将始终是新的空对象。