Объект потерян после публикации в ядре .net - PullRequest
0 голосов
/ 13 сентября 2018

Я занимаюсь разработкой небольшого веб-приложения с использованием страниц .Net Core Razor, и я совершенно новичок в его использовании.

У меня есть объект, которому присвоен атрибут [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 голосов
/ 13 сентября 2018

Ваш вопрос немного сложен для понимания, но я думаю, что проблема заключается в том, что вы не понимаете, как работает конвейер запросов. Ваш PageModel здесь создается с каждым запросом и удаляется в конце указанного запроса, когда ответ возвращается. Когда вы делаете новый запрос, у вас есть совершенно новый экземпляр, поэтому все, что вы ранее установили для свойства, такого как Inputs, здесь, как если бы оно никогда не происходило. Если вы пытаетесь сохранить что-то между запросами, вам нужно где-то сохранить это. Это может быть так же просто, как использовать Session или сохранить что-то в базе данных или другом хранилище.

...