Как объявить глобальные переменные в Blazor, например, у меня есть входные вопросы в Index. Я хочу использовать это на другой странице под названием Quiz. https://github.com/KalyanAllam/MauiAppMCQs/
@page "/"
<h1> Quiz </h1>
Select Input Questions and
Click on Quiz .
<div class = "row">
<p>Questions:</p>
<input type = "range" min = "5" max = "20" step = "5" @bind = "@inputquestions"
@bind:event = "oninput" />
</div>
<p>@inputquestions</p>
@code {
public int inputquestions=5;
}
Имейте в виду, что любые «глобальные» данные предназначены для «всех пользователей». Что означает «все пользователи» во многом зависит от выбранного вами режима интерактивности.
Статические классы
public static class MyStaticClass
{
public int InputQuestions {get;set;} =5;
}
<input type = "range" min = "5" max = "20" step = "5" @bind = "@MyStaticClass.InputQuestions"
@bind:event = "oninput" />
Или услуга
public MyClass
{
public int InputQuestions {get;set;} =5;
}
//program.cs
builder.Services.AddSingleton<MyClass>();
@inject MyClass myClass
...
@bind = "@myClass.InputQuestions"
Чтобы узнать разницу между этими двумя, найдите класс Singleton и Static.
Обратите внимание, что Singleton в Blazor-Server означает, что все пользователи используют один и тот же экземпляр. То же самое для статического класса. В Blazor-Wasm это один и тот же экземпляр для одного пользователя, использующего приложение.
@jeb ну, это правда. Мой разум был «заперт» в блазоре, где эти соображения исчезли. Я отредактирую ответ.
@Alamakanambra Я внес вышеперечисленные изменения, но исходный код с двусторонней привязкой, похоже, не работает. На следующую страницу всегда передается 5, даже если я меняю его на 10 или 15, вот мой исходный код github.com/KalyanAllam/MauiAppMCQs
@KALYANAALLAM Привязка работает, и значение попадает в myClass, верно? Где еще можно использовать ваш MyClass. Потому что я не вижу ничего в вашем коде. Только в вашем QuizCardBase.cs, где вы снова инициализируете (= new MyClass()) переменную (не получая ее из контейнера DI)...
@Alamakanambra Я хочу использовать myClass в QuizCardBase.cs. Я инициализирую переменную (= new MyClass()) как нулевую ссылку на ее выдачу, пожалуйста, предложите, как мне получить из контейнера DI if (count == myclass.InputQuestions) { stopflag = "Н"; }
Я пытался использовать параметр Route, это сработало
Глобальные переменные на веб-сайте обычно не являются разумным выбором, поскольку все экземпляры имеют одно и то же значение...