{"id":73001,"date":"2024-08-11T01:58:32","date_gmt":"2024-08-10T22:28:32","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/"},"modified":"2024-08-11T01:58:32","modified_gmt":"2024-08-10T22:28:32","slug":"aspnet-core-di-constructor-with-parameters-2j4a","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/","title":{"rendered":"\u0633\u0627\u0632\u0646\u062f\u0647 ASP.NET Core DI \u0628\u0627 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627"},"content":{"rendered":"<p>Summarize this content to 400 words in Persian Lang <\/p>\n<p>  \u0645\u0642\u062f\u0645\u0647<\/p>\n<p>\u0628\u06cc\u0634\u062a\u0631 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u062e\u062f\u0645\u0627\u062a \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631\u0633 \u0646\u062d\u0648\u0647 \u062b\u0628\u062a \u0633\u0631\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631. \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u06cc\u0686 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc ASP.NET Core \u0646\u062f\u0627\u0634\u062a \u0648 \u062b\u0627\u0646\u06cc\u0627\u064b \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0646\u06cc\u0645\u0647 \u0645\u062d\u0628\u0648\u0628 NuGet \u0628\u0627\u0634\u062f.<\/p>\n<p>public class Program<br \/>\n{<br \/>\n    public static void Main(string[] args)<br \/>\n    {<br \/>\n        var builder = WebApplication.CreateBuilder(args);<\/p>\n<p>        builder.Services.AddRazorPages();<\/p>\n<p>        builder.Services.AddScopedIValidatorPerson&gt;, PersonValidator&gt;();<br \/>\n        builder.Services.AddFluentValidationAutoValidation();<\/p>\n<p>        var app = builder.Build();<\/p>\n<p>        \/\/ Configure the HTTP request pipeline.<br \/>\n        if (!app.Environment.IsDevelopment())<br \/>\n        {<br \/>\n            app.UseExceptionHandler(&#8220;\/Error&#8221;);<br \/>\n            \/\/ The default HSTS value is 30 days. You may want to change this for production scenarios, see https:\/\/aka.ms\/aspnetcore-hsts.<br \/>\n            app.UseHsts();<br \/>\n        }<\/p>\n<p>        app.UseHttpsRedirection();<br \/>\n        app.UseStaticFiles();<\/p>\n<p>        app.UseRouting();<\/p>\n<p>        app.UseAuthorization();<\/p>\n<p>        app.MapRazorPages();<\/p>\n<p>        app.Run();<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u062f \u0645\u0646\u0628\u0639<\/p>\n<p>\ud83d\udd38 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u0632 NET8 Core Framework \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<p>  \u0628\u0633\u062a\u0647 LocalStorage NuGet<\/p>\n<p>LocalStorage \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0622\u0646\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0639\u0644\u0627\u0648\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 appsettings.json \u0628\u0627 \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<p>\ud83d\udee1\ufe0f \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0646\u0645\u0648\u0646\u0647\u060c \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0627\u0633\u062a \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u06a9\u067e\u06cc\/\u067e\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<p>{<br \/>\n  &#8220;SecretVault&#8221;: {<br \/>\n    &#8220;Key&#8221;: &#8220;@user_!maple_hiney_cars1&#8221;,<br \/>\n    &#8220;Password&#8221;: &#8220;^SsD_Ooops_Coffee_tree_d_f_5&#8221;,<br \/>\n    &#8220;Salt&#8221;: &#8220;50652cbc-cd7b-4763-a833-f2802a26285e&#8221;<br \/>\n  }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0641\u0648\u0642 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 Solution Explorer \u06a9\u0644\u06cc\u06a9 \u0631\u0627\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p>  \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0633\u062a<\/p>\n<p>\u0631\u0648\u0634 \u0647\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0648\u0628<\/p>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631<\/p>\n<p>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0634\u062f\u0647 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0641\u0647\u0631\u0633\u062a \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p>\u0645\u062f\u0644<\/p>\n<p>public class Person<br \/>\n{<br \/>\n    public int Id { get; set; }<br \/>\n    public string  FirstName { get; set; }<br \/>\n    public string LastName { get; set; }<br \/>\n    public override string ToString() =&gt; $&#8221;{Id,-4}{FirstName} {LastName}&#8221;;<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u0645\u0631\u0627\u062d\u0644<\/p>\n<p>\u06a9\u0647 \u0642\u0628\u0644\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0646\u062f \u0627\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u062f \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u0645. LocalStorage \u06a9\u0644\u0627\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f \u06a9\u0647 \u062b\u0628\u062a \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0633\u0627\u0632\u0646\u062f\u0647 LocalStorage \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0648\u0644 \u0627\u0632 \u0646\u0648\u0639 LocalStorageConfiguration \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0628\u0633\u062a\u0647 LocalStorage NuGet \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0648\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a\/\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0637\u0627\u0628\u0642 \u0641\u0627\u06cc\u0644 \u0645\u062e\u0641\u06cc \u0628\u0627\u0644\u0627 \u0627\u0632 appsettings.json \u0622\u0645\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062b\u0628\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<p>public interface ILocalSetup<br \/>\n{<br \/>\n    LocalStorageConfiguration Configuration { get; set; }<br \/>\n    string Key { get; init; }<br \/>\n    string Password { get; init; }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u06a9\u0644\u0627\u0633\u06cc \u06a9\u0647 ILocalSetup \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u062a\u06a9\u200c\u062a\u0646\u0647 \u0627\u0633\u062a\u060c \u0627\u06af\u0631\u0686\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u063a\u06cc\u0631 \u062a\u06a9\u200c\u062a\u0646\u0647\u200c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u06a9\u200c\u062a\u0648\u0646 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u0633\u062a.<\/p>\n<p>public sealed class LocalSetup : ILocalSetup<br \/>\n{<br \/>\n    private static readonly LazyLocalSetup&gt; Lazy = new(() =&gt; new LocalSetup());<br \/>\n    public static LocalSetup Instance =&gt; Lazy.Value;<br \/>\n    public LocalStorageConfiguration Configuration { get; set; }<br \/>\n    public string Key { get; init; }<br \/>\n    public string Password { get; init; }<br \/>\n    public static string Salt { get; set; }<\/p>\n<p>    public LocalSetup()<br \/>\n    {<br \/>\n        Key = VaultReader.Key;<br \/>\n        Password = VaultReader.Password;<br \/>\n        Salt = VaultReader.Salt;<\/p>\n<p>        Configuration = GetConfiguration();<br \/>\n    }<\/p>\n<p>    private static LocalStorageConfiguration GetConfiguration()<br \/>\n        =&gt; new() { EnableEncryption = true, EncryptionSalt = Salt };<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0633\u0631\u0648\u06cc\u0633 ILocalSetup \u0631\u0627 \u062f\u0631 Program.cs \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f<\/p>\n<p>builder.Services.AddSingletonILocalSetup, LocalSetup&gt;();<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u067e\u0633 \u0627\u0632 \u062b\u0628\u062a \u0646\u0627\u0645\u060c \u0632\u0645\u0627\u0646 \u062b\u0628\u062a \u0646\u0627\u0645 ILocalStorage \u0627\u0633\u062a. ILocalSetup \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a. <\/p>\n<p>GetRequiredService \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0642\u0628\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 GetRequiredService\u060c \u0627\u06af\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u067e\u06cc\u062f\u0627 \u0646\u0634\u0648\u062f\u060c \u0628\u0627\u0639\u062b \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 GetService null \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f null \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\/*<br \/>\n * service to get configuration and password from appsettings.json<br \/>\n * setup with user secrets (Azure is a better option).<br \/>\n *\/<br \/>\nbuilder.Services.AddSingletonILocalSetup, LocalSetup&gt;();<\/p>\n<p>\/\/ service to read and write to local storage file<br \/>\nbuilder.Services.AddScopedILocalStorage&gt;(provider =&gt;<br \/>\n{<br \/>\n    var localSetup = provider.GetRequiredServiceILocalSetup&gt;();<br \/>\n    return new LocalStorage(localSetup.Configuration, localSetup.Password);<br \/>\n});<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u062e\u0631\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u06a9\u062f\u060c localSetup \u06cc\u06a9 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 LocalSetup \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0633\u0627\u0632\u0646\u062f\u0647 LocalStorage \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0628\u0633\u062a\u0647 LocalStorage \u0646\u06cc\u0632 \u0628\u062f\u0648\u0646 \u0639\u0628\u0648\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0645\u062d\u0627\u0641\u0638\u062a \u0646\u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 LocalStorage<\/p>\n<p>\u062f\u0631 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647\u060c \u062a\u0635\u0648\u06cc\u0631 \u0633\u0645\u062a \u0686\u067e \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0633\u062a\u060c \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u06af\u06cc\u0631\u0646\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p>  \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0633\u06cc \u0634\u0627\u0631\u067e<\/p>\n<p>  \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc\/\u0641\u0647\u0631\u0633\u062a<\/p>\n<p>\u0645\u062a\u063a\u06cc\u0631 LocalStorageKey \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 singleton \u062d\u0627\u0648\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0632 appsettings.json \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0628\u0647 \u0641\u0631\u0648\u0634\u06af\u0627\u0647 \u0631\u0648\u0634\u06cc \u062f\u0631 \u067e\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0635\u0641\u062d\u0647 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<br \/>\n\u0642\u0633\u0645\u062a _localStorage \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 \u0635\u0641\u062d\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 Post \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 Person \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u0645\u0648\u0636\u0648\u0639\u060c \u0647\u06cc\u0686 \u0627\u062f\u0639\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc \u062e\u0627\u0644\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. Person.Id \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u062f\u0644\u06cc\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0634\u0646\u0627\u0633\u0647 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<\/p>\n<p>using Hanssens.Net;<br \/>\nusing Microsoft.AspNetCore.Mvc;<br \/>\nusing Microsoft.AspNetCore.Mvc.RazorPages;<br \/>\nusing WorkingWithLocalStorageApp.Classes;<br \/>\nusing WorkingWithLocalStorageApp.Models;<\/p>\n<p>namespace WorkingWithLocalStorageApp.Pages;<br \/>\npublic class IndexModel : PageModel<br \/>\n{<br \/>\n    string LocalStorageKey =&gt; LocalSetup.Instance.Key;<br \/>\n    private LocalStorage _localStorage;<\/p>\n<p>    [BindProperty]\n    public Person Person { get; set; }<\/p>\n<p>    public IndexModel(ILocalStorage storage)<br \/>\n        =&gt; _localStorage = storage as LocalStorage;<\/p>\n<p>    public void OnGet() { }<\/p>\n<p>    public RedirectToPageResult OnPostSetLocalToLocalStorage()<br \/>\n    {<br \/>\n        Person.Id = 1;<br \/>\n        _localStorage.Store(LocalStorageKey,Person);<br \/>\n        _localStorage.Persist();<\/p>\n<p>        return RedirectToPage(&#8220;ViewPage&#8221;);<br \/>\n    }<\/p>\n<p>    public void OnPostGetFromLocalStorage()<br \/>\n    {<br \/>\n        var person = _localStorage.GetPerson&gt;(LocalStorageKey);<\/p>\n<p>        Log.Information(&#8220;Person: {person}&#8221;, person);<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647<\/p>\n<p>  \u0635\u0641\u062d\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a<\/p>\n<p>\u0627\u0632 \u0647\u0645\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc\/\u0648\u0631\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062f\u0631 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc Person \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<p>public class ViewPageModel : PageModel<br \/>\n{<br \/>\n    private LocalStorage _localStorage;<\/p>\n<p>    [BindProperty]\n    public Person Person { get; set; }<\/p>\n<p>    public ViewPageModel(ILocalStorage storage)<br \/>\n        =&gt; _localStorage = storage as LocalStorage;<\/p>\n<p>    public void OnGet()<br \/>\n    {<br \/>\n        Person = _localStorage.GetPerson&gt;(LocalSetup.Instance.Key);<br \/>\n    }<br \/>\n}<\/p>\n<p>    \u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/p>\n<p>    \u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/p>\n<p>  \u062e\u0644\u0627\u0635\u0647<\/p>\n<p>\u06a9\u062f\u06cc \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u0633\u0631\u0648\u06cc\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0633\u0627\u0632\u0646\u062f\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u062f. \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u062f\u0631 \u062c\u0639\u0628\u0647 \u0627\u0628\u0632\u0627\u0631 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u0641\u06cc\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u06a9\u062f\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u06cc\u0646 \u062c\u0644\u0633\u0627\u062a \u0648\/\u06cc\u0627 \u0635\u0641\u062d\u0627\u062a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u06a9\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<div data-article-id=\"1954840\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_84 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D9%85%D9%82%D8%AF%D9%85%D9%87\" >\u0645\u0642\u062f\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D8%A8%D8%B3%D8%AA%D9%87_LocalStorage_NuGet\" >\u0628\u0633\u062a\u0647 LocalStorage NuGet<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%DA%86%DB%8C%D8%B2%DB%8C_%DA%A9%D9%87_%D9%86%DB%8C%D8%B3%D8%AA\" >\u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0633\u062a<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D9%86%D9%85%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1\" >\u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D9%85%D8%B1%D8%A7%D8%AD%D9%84\" >\u0645\u0631\u0627\u062d\u0644<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_LocalStorage\" >\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 LocalStorage<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86_%D9%87%D8%A7%DB%8C_%D8%B5%D9%81%D8%AD%D9%87_%D8%B3%DB%8C_%D8%B4%D8%A7%D8%B1%D9%BE\" >\u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0633\u06cc \u0634\u0627\u0631\u067e<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D8%B5%D9%81%D8%AD%D9%87_%D9%88%D8%B1%D9%88%D8%AF%DB%8C%D9%81%D9%87%D8%B1%D8%B3%D8%AA\" >\u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc\/\u0641\u0647\u0631\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D8%B5%D9%81%D8%AD%D9%87_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA\" >\u0635\u0641\u062d\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/aspnet-core-di-constructor-with-parameters-2j4a\/#%D8%AE%D9%84%D8%A7%D8%B5%D9%87\" >\u062e\u0644\u0627\u0635\u0647<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0634\u062a\u0631 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u062e\u062f\u0645\u0627\u062a \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631\u0633 \u0646\u062d\u0648\u0647 \u062b\u0628\u062a \u0633\u0631\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631. \u0627\u06cc\u0646 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f \u06a9\u0647 \u0646\u0648\u06cc\u0633\u0646\u062f\u0647 \u0647\u06cc\u0686 \u062f\u0633\u062a\u0648\u0631\u0627\u0644\u0639\u0645\u0644\u06cc \u0628\u0631\u0627\u06cc ASP.NET Core \u0646\u062f\u0627\u0634\u062a \u0648 \u062b\u0627\u0646\u06cc\u0627\u064b \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f \u06cc\u06a9 \u0628\u0633\u062a\u0647 \u0646\u06cc\u0645\u0647 \u0645\u062d\u0628\u0648\u0628 NuGet \u0628\u0627\u0634\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Program<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">Main<\/span><span class=\"p\">(<\/span><span class=\"kt\">string<\/span><span class=\"p\">[]<\/span> <span class=\"n\">args<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">builder<\/span> <span class=\"p\">=<\/span> <span class=\"n\">WebApplication<\/span><span class=\"p\">.<\/span><span class=\"nf\">CreateBuilder<\/span><span class=\"p\">(<\/span><span class=\"n\">args<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"nf\">AddRazorPages<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"n\">AddScoped<\/span><span class=\"p\"><span class=\"n\">IValidator<\/span><span class=\"p\"><span class=\"n\">Person<\/span><span class=\"p\">&gt;,<\/span> <span class=\"n\">PersonValidator<\/span><span class=\"p\">&gt;();<\/span>\n        <span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"nf\">AddFluentValidationAutoValidation<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"kt\">var<\/span> <span class=\"n\">app<\/span> <span class=\"p\">=<\/span> <span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"nf\">Build<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"c1\">\/\/ Configure the HTTP request pipeline.<\/span>\n        <span class=\"k\">if<\/span> <span class=\"p\">(!<\/span><span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"n\">Environment<\/span><span class=\"p\">.<\/span><span class=\"nf\">IsDevelopment<\/span><span class=\"p\">())<\/span>\n        <span class=\"p\">{<\/span>\n            <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseExceptionHandler<\/span><span class=\"p\">(<\/span><span class=\"s\">\"\/Error\"<\/span><span class=\"p\">);<\/span>\n            <span class=\"c1\">\/\/ The default HSTS value is 30 days. You may want to change this for production scenarios, see https:\/\/aka.ms\/aspnetcore-hsts.<\/span>\n            <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseHsts<\/span><span class=\"p\">();<\/span>\n        <span class=\"p\">}<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseHttpsRedirection<\/span><span class=\"p\">();<\/span>\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseStaticFiles<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseRouting<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">UseAuthorization<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">MapRazorPages<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"n\">app<\/span><span class=\"p\">.<\/span><span class=\"nf\">Run<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n\n<\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u062f \u0645\u0646\u0628\u0639\n<\/p>\n<p>\ud83d\udd38 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u0632 NET8 Core Framework \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%B3%D8%AA%D9%87_LocalStorage_NuGet\"><\/span>\n<p>  \u0628\u0633\u062a\u0647 LocalStorage NuGet<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>LocalStorage \u0642\u0627\u0628\u0644\u06cc\u062a\u200c\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647\u200c\u0634\u062f\u0647 \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0641\u06cc\u0632\u06cc\u06a9\u06cc \u0641\u0631\u0627\u0647\u0645 \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646 \u0622\u0646\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647 \u0631\u0627\u062d\u062a\u06cc \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0631\u062f \u0648 \u0628\u0647 \u0622\u0646\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u06a9\u0631\u062f\u060c \u0647\u0645\u0631\u0627\u0647 \u0628\u0627 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0627\u0632 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u062f\u0627\u062f\u0647\u200c\u0647\u0627 \u0628\u0647\u200c\u0639\u0644\u0627\u0648\u0647 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u0631\u0627\u06cc \u0633\u0627\u062e\u062a \u0633\u0631\u0648\u06cc\u0633 \u062f\u0631 appsettings.json \u0628\u0627 \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631.<\/p>\n<p>\ud83d\udee1\ufe0f \u0642\u0628\u0644 \u0627\u0632 \u0627\u062c\u0631\u0627\u06cc \u06a9\u062f \u0646\u0645\u0648\u0646\u0647\u060c \u0628\u0627\u06cc\u062f \u0628\u0627 \u06a9\u0644\u06cc\u06a9 \u0631\u0627\u0633\u062a \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647\u060c \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0645\u0642\u062f\u0627\u0631\u062f\u0647\u06cc \u0627\u0648\u0644\u06cc\u0647 \u06a9\u0646\u06cc\u062f\u060c \u0645\u062f\u06cc\u0631\u06cc\u062a \u0627\u0633\u0631\u0627\u0631 \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f \u0648 \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0631\u0627 \u06a9\u067e\u06cc\/\u067e\u06cc\u0633\u062a \u06a9\u0646\u06cc\u062f \u0648 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u06cc\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"SecretVault\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">{<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"Key\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"@user_!maple_hiney_cars1\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"Password\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"^SsD_Ooops_Coffee_tree_d_f_5\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"nl\">\"Salt\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"50652cbc-cd7b-4763-a833-f2802a26285e\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0631\u0627\u06cc \u0627\u0646\u062c\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u0641\u0648\u0642 \u0631\u0648\u06cc \u067e\u0631\u0648\u0698\u0647 \u062f\u0631 Solution Explorer \u06a9\u0644\u06cc\u06a9 \u0631\u0627\u0633\u062a \u06a9\u0646\u06cc\u062f.<\/p>\n<p><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%DA%86%DB%8C%D8%B2%DB%8C_%DA%A9%D9%87_%D9%86%DB%8C%D8%B3%D8%AA\"><\/span>\n<p>  \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0646\u06cc\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>\u0631\u0648\u0634 \u0647\u0627\u06cc \u06a9\u0627\u0631 \u0628\u0627 \u0630\u062e\u06cc\u0631\u0647 \u0633\u0627\u0632\u06cc \u0645\u062d\u0644\u06cc \u0648\u0628<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D9%86%D9%85%D9%88%D9%86%D9%87_%DA%A9%D8%A7%D8%B1\"><\/span>\n<p>  \u0646\u0645\u0648\u0646\u0647 \u06a9\u0627\u0631<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u062c\u0645\u0639 \u0622\u0648\u0631\u06cc \u0634\u062f\u0647 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0641\u0647\u0631\u0633\u062a \u0631\u0627 \u0628\u06af\u06cc\u0631\u06cc\u062f \u0648 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0627\u0632\u06cc\u0627\u0628\u06cc \u06a9\u0646\u06cc\u062f.<\/p>\n<p><strong>\u0645\u062f\u0644<\/strong><\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">Person<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">int<\/span> <span class=\"n\">Id<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span>  <span class=\"n\">FirstName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">LastName<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">override<\/span> <span class=\"kt\">string<\/span> <span class=\"nf\">ToString<\/span><span class=\"p\">()<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"s\">$\"<\/span><span class=\"p\">{<\/span><span class=\"n\">Id<\/span><span class=\"p\">,-<\/span><span class=\"m\">4<\/span><span class=\"p\">}{<\/span><span class=\"n\">FirstName<\/span><span class=\"p\">}<\/span><span class=\"s\"> <\/span><span class=\"p\">{<\/span><span class=\"n\">LastName<\/span><span class=\"p\">}<\/span><span class=\"s\">\"<\/span><span class=\"p\">;<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D9%85%D8%B1%D8%A7%D8%AD%D9%84\"><\/span>\n<p>  \u0645\u0631\u0627\u062d\u0644<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06a9\u0647 \u0642\u0628\u0644\u0627 \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0646\u062f \u0627\u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u06a9\u062f \u0635\u062d\u0628\u062a \u06a9\u0646\u06cc\u0645. LocalStorage \u06a9\u0644\u0627\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0645\u06cc \u067e\u0630\u06cc\u0631\u062f \u06a9\u0647 \u062b\u0628\u062a \u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<p>\u0633\u0627\u0632\u0646\u062f\u0647 LocalStorage \u0628\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0648\u0644 \u0627\u0632 \u0646\u0648\u0639 LocalStorageConfiguration \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0631 \u0628\u0633\u062a\u0647 LocalStorage NuGet \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a \u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u062f\u0648\u0645 \u0631\u0645\u0632 \u0639\u0628\u0648\u0631 \u0627\u0633\u062a. \u0627\u0637\u0644\u0627\u0639\u0627\u062a\/\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0645\u0637\u0627\u0628\u0642 \u0641\u0627\u06cc\u0644 \u0645\u062e\u0641\u06cc \u0628\u0627\u0644\u0627 \u0627\u0632 appsettings.json \u0622\u0645\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f.<\/p>\n<p>\u0627\u0632 \u0622\u0646\u062c\u0627\u06cc\u06cc \u06a9\u0647 \u062b\u0628\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0628\u0647 \u06cc\u06a9 \u0631\u0627\u0628\u0637 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f \u0645\u0648\u0627\u0631\u062f \u0632\u06cc\u0631 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">interface<\/span> <span class=\"nc\">ILocalSetup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"n\">LocalStorageConfiguration<\/span> <span class=\"n\">Configuration<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"kt\">string<\/span> <span class=\"n\">Key<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">init<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"kt\">string<\/span> <span class=\"n\">Password<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">init<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0644\u0627\u0633\u06cc \u06a9\u0647 ILocalSetup \u0631\u0627 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u06cc\u06a9 \u062a\u06a9\u200c\u062a\u0646\u0647 \u0627\u0633\u062a\u060c \u0627\u06af\u0631\u0686\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 \u063a\u06cc\u0631 \u062a\u06a9\u200c\u062a\u0646\u0647\u200c\u0627\u06cc \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 \u062a\u06a9\u200c\u062a\u0648\u0646 \u0633\u0627\u062f\u0647\u200c\u062a\u0631 \u0627\u0633\u062a.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">sealed<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">LocalSetup<\/span> <span class=\"p\">:<\/span> <span class=\"n\">ILocalSetup<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">static<\/span> <span class=\"k\">readonly<\/span> <span class=\"n\">Lazy<\/span><span class=\"p\"><span class=\"n\">LocalSetup<\/span><span class=\"p\">&gt;<\/span> <span class=\"n\">Lazy<\/span> <span class=\"p\">=<\/span> <span class=\"k\">new<\/span><span class=\"p\">(()<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">LocalSetup<\/span><span class=\"p\">());<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"n\">LocalSetup<\/span> <span class=\"n\">Instance<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">Lazy<\/span><span class=\"p\">.<\/span><span class=\"n\">Value<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">LocalStorageConfiguration<\/span> <span class=\"n\">Configuration<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Key<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">init<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span> \n    <span class=\"k\">public<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Password<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">init<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n    <span class=\"k\">public<\/span> <span class=\"k\">static<\/span> <span class=\"kt\">string<\/span> <span class=\"n\">Salt<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">LocalSetup<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Key<\/span> <span class=\"p\">=<\/span> <span class=\"n\">VaultReader<\/span><span class=\"p\">.<\/span><span class=\"n\">Key<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">Password<\/span> <span class=\"p\">=<\/span> <span class=\"n\">VaultReader<\/span><span class=\"p\">.<\/span><span class=\"n\">Password<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">Salt<\/span> <span class=\"p\">=<\/span> <span class=\"n\">VaultReader<\/span><span class=\"p\">.<\/span><span class=\"n\">Salt<\/span><span class=\"p\">;<\/span>\n\n        <span class=\"n\">Configuration<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">GetConfiguration<\/span><span class=\"p\">();<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">private<\/span> <span class=\"k\">static<\/span> <span class=\"n\">LocalStorageConfiguration<\/span> <span class=\"nf\">GetConfiguration<\/span><span class=\"p\">()<\/span> \n        <span class=\"p\">=&gt;<\/span> <span class=\"k\">new<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"n\">EnableEncryption<\/span> <span class=\"p\">=<\/span> <span class=\"k\">true<\/span><span class=\"p\">,<\/span> <span class=\"n\">EncryptionSalt<\/span> <span class=\"p\">=<\/span> <span class=\"n\">Salt<\/span> <span class=\"p\">};<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0633\u0631\u0648\u06cc\u0633 ILocalSetup \u0631\u0627 \u062f\u0631 Program.cs \u062b\u0628\u062a \u06a9\u0646\u06cc\u062f<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"n\">AddSingleton<\/span><span class=\"p\"><span class=\"n\">ILocalSetup<\/span><span class=\"p\">,<\/span> <span class=\"n\">LocalSetup<\/span><span class=\"p\">&gt;();<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u067e\u0633 \u0627\u0632 \u062b\u0628\u062a \u0646\u0627\u0645\u060c \u0632\u0645\u0627\u0646 \u062b\u0628\u062a \u0646\u0627\u0645 ILocalStorage \u0627\u0633\u062a. ILocalSetup \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062e\u0634 \u0645\u0647\u0645\u06cc \u0627\u0632 \u0641\u0631\u0622\u06cc\u0646\u062f \u0627\u0633\u062a. <\/p>\n<p>GetRequiredService \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 \u0633\u0631\u0648\u06cc\u0633 \u0642\u0628\u0644\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p>\u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 GetRequiredService\u060c \u0627\u06af\u0631 \u0633\u0631\u0648\u06cc\u0633 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u067e\u06cc\u062f\u0627 \u0646\u0634\u0648\u062f\u060c \u0628\u0627\u0639\u062b \u0627\u0633\u062a\u062b\u0646\u0627 \u062f\u0631 \u0632\u0645\u0627\u0646 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u062f\u0631 \u062d\u0627\u0644\u06cc \u06a9\u0647 GetService null \u0631\u0627 \u0628\u0631\u0645\u06cc \u06af\u0631\u062f\u0627\u0646\u062f\u060c \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u06a9\u0647 \u062a\u0648\u0633\u0639\u0647 \u062f\u0647\u0646\u062f\u0647 \u0628\u0627\u06cc\u062f null \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"cm\">\/*\n * service to get configuration and password from appsettings.json\n * setup with user secrets (Azure is a better option).\n *\/<\/span>\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"n\">AddSingleton<\/span><span class=\"p\"><span class=\"n\">ILocalSetup<\/span><span class=\"p\">,<\/span> <span class=\"n\">LocalSetup<\/span><span class=\"p\">&gt;();<\/span>\n\n<span class=\"c1\">\/\/ service to read and write to local storage file<\/span>\n<span class=\"n\">builder<\/span><span class=\"p\">.<\/span><span class=\"n\">Services<\/span><span class=\"p\">.<\/span><span class=\"n\">AddScoped<\/span><span class=\"p\"><span class=\"n\">ILocalStorage<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">provider<\/span> <span class=\"p\">=&gt;<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">var<\/span> <span class=\"n\">localSetup<\/span> <span class=\"p\">=<\/span> <span class=\"n\">provider<\/span><span class=\"p\">.<\/span><span class=\"n\">GetRequiredService<\/span><span class=\"p\"><span class=\"n\">ILocalSetup<\/span><span class=\"p\">&gt;();<\/span>\n    <span class=\"k\">return<\/span> <span class=\"k\">new<\/span> <span class=\"nf\">LocalStorage<\/span><span class=\"p\">(<\/span><span class=\"n\">localSetup<\/span><span class=\"p\">.<\/span><span class=\"n\">Configuration<\/span><span class=\"p\">,<\/span> <span class=\"n\">localSetup<\/span><span class=\"p\">.<\/span><span class=\"n\">Password<\/span><span class=\"p\">);<\/span>\n<span class=\"p\">});<\/span>\n<\/span><\/span><\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u062e\u0631\u06cc\u0646 \u0628\u0644\u0648\u06a9 \u06a9\u062f\u060c localSetup \u06cc\u06a9 \u0627\u0631\u062c\u0627\u0639 \u0628\u0647 LocalSetup \u062f\u0627\u0631\u062f \u06a9\u0647 \u062f\u0627\u0631\u0627\u06cc \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u0633\u0627\u0632\u0646\u062f\u0647 LocalStorage \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u0634\u0648\u062f.<\/p>\n<p><strong>\u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f<\/strong> \u06a9\u0647 \u0628\u0633\u062a\u0647 LocalStorage \u0646\u06cc\u0632 \u0628\u062f\u0648\u0646 \u0639\u0628\u0648\u0631 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f \u0627\u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0645\u062d\u0627\u0641\u0638\u062a \u0646\u0645\u06cc \u0634\u0648\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"%D8%A8%D8%A7_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_LocalStorage\"><\/span>\n<p>  \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 LocalStorage<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u062f\u0631 \u06a9\u062f \u0646\u0645\u0648\u0646\u0647\u060c \u062a\u0635\u0648\u06cc\u0631 \u0633\u0645\u062a \u0686\u067e \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc \u0627\u0633\u062a\u060c \u0633\u0645\u062a \u0631\u0627\u0633\u062a \u06af\u06cc\u0631\u0646\u062f\u0647 \u0627\u0633\u062a. <\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhwo7l32gd1ykj88z666b.png\" alt=\"\u0627\u0633\u06a9\u0631\u06cc\u0646 \u0634\u0627\u062a \u0628\u0631\u0627\u06cc \u0635\u0641\u062d\u0627\u062a \u0648\u0631\u0648\u062f\u06cc \u0648 \u06af\u06cc\u0631\u0646\u062f\u0647\" loading=\"lazy\" width=\"800\" height=\"392\" title=\"\"><\/p>\n<h3><span class=\"ez-toc-section\" id=\"%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86_%D9%87%D8%A7%DB%8C_%D8%B5%D9%81%D8%AD%D9%87_%D8%B3%DB%8C_%D8%B4%D8%A7%D8%B1%D9%BE\"><\/span>\n<p>  \u067e\u0634\u062a\u06cc\u0628\u0627\u0646 \u0647\u0627\u06cc \u0635\u0641\u062d\u0647 \u0633\u06cc \u0634\u0627\u0631\u067e<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<h4><span class=\"ez-toc-section\" id=\"%D8%B5%D9%81%D8%AD%D9%87_%D9%88%D8%B1%D9%88%D8%AF%DB%8C%D9%81%D9%87%D8%B1%D8%B3%D8%AA\"><\/span>\n<p>  \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc\/\u0641\u0647\u0631\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<ul>\n<li>\u0645\u062a\u063a\u06cc\u0631 LocalStorageKey \u06af\u0631\u0641\u062a\u0647 \u0634\u062f\u0647 \u0627\u0632 \u06a9\u0644\u0627\u0633 singleton \u062d\u0627\u0648\u06cc \u06a9\u0644\u06cc\u062f\u06cc \u0627\u0632 appsettings.json \u0628\u0631\u0627\u06cc \u0627\u0631\u0633\u0627\u0644 \u0628\u0647 <strong>\u0641\u0631\u0648\u0634\u06af\u0627\u0647<\/strong> \u0631\u0648\u0634\u06cc \u062f\u0631 \u067e\u0633\u062a \u06a9\u0647 \u0628\u0627\u06cc\u062f \u062f\u0631 \u0635\u0641\u062d\u0647 \u06af\u06cc\u0631\u0646\u062f\u0647 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<\/li>\n<li>\u0642\u0633\u0645\u062a _localStorage \u062f\u0631 \u0633\u0627\u0632\u0646\u062f\u0647 \u0635\u0641\u062d\u0647 \u062a\u0646\u0638\u06cc\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 Post \u0628\u0631\u0627\u06cc \u0630\u062e\u06cc\u0631\u0647 \u0646\u0645\u0648\u0646\u0647 \u0627\u06cc \u0627\u0632 Person \u062f\u0631 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<\/ul>\n<p>\u0628\u0631\u0627\u06cc \u062d\u0641\u0638 \u0645\u0648\u0636\u0648\u0639\u060c \u0647\u06cc\u0686 \u0627\u062f\u0639\u0627\u06cc\u06cc \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f \u06a9\u0647 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc \u062e\u0627\u0644\u06cc \u0646\u06cc\u0633\u062a\u0646\u062f. Person.Id \u06a9\u062f\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0646\u0645\u0648\u0646\u0647 \u062f\u0644\u06cc\u0644\u06cc \u0628\u0631\u0627\u06cc \u0627\u0641\u0632\u0627\u06cc\u0634 \u0634\u0646\u0627\u0633\u0647 \u0648\u062c\u0648\u062f \u0646\u062f\u0627\u0631\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">using<\/span> <span class=\"nn\">Hanssens.Net<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">using<\/span> <span class=\"nn\">Microsoft.AspNetCore.Mvc<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">using<\/span> <span class=\"nn\">Microsoft.AspNetCore.Mvc.RazorPages<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">using<\/span> <span class=\"nn\">WorkingWithLocalStorageApp.Classes<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">using<\/span> <span class=\"nn\">WorkingWithLocalStorageApp.Models<\/span><span class=\"p\">;<\/span>\n\n\n<span class=\"k\">namespace<\/span> <span class=\"nn\">WorkingWithLocalStorageApp.Pages<\/span><span class=\"p\">;<\/span>\n<span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">IndexModel<\/span> <span class=\"p\">:<\/span> <span class=\"n\">PageModel<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"kt\">string<\/span> <span class=\"n\">LocalStorageKey<\/span> <span class=\"p\">=&gt;<\/span> <span class=\"n\">LocalSetup<\/span><span class=\"p\">.<\/span><span class=\"n\">Instance<\/span><span class=\"p\">.<\/span><span class=\"n\">Key<\/span><span class=\"p\">;<\/span>\n    <span class=\"k\">private<\/span> <span class=\"n\">LocalStorage<\/span> <span class=\"n\">_localStorage<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">BindProperty<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">Person<\/span> <span class=\"n\">Person<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">IndexModel<\/span><span class=\"p\">(<\/span><span class=\"n\">ILocalStorage<\/span> <span class=\"n\">storage<\/span><span class=\"p\">)<\/span> \n        <span class=\"p\">=&gt;<\/span> <span class=\"n\">_localStorage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">storage<\/span> <span class=\"k\">as<\/span> <span class=\"n\">LocalStorage<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnGet<\/span><span class=\"p\">()<\/span> <span class=\"p\">{<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"n\">RedirectToPageResult<\/span> <span class=\"nf\">OnPostSetLocalToLocalStorage<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Person<\/span><span class=\"p\">.<\/span><span class=\"n\">Id<\/span> <span class=\"p\">=<\/span> <span class=\"m\">1<\/span><span class=\"p\">;<\/span>\n        <span class=\"n\">_localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">Store<\/span><span class=\"p\">(<\/span><span class=\"n\">LocalStorageKey<\/span><span class=\"p\">,<\/span><span class=\"n\">Person<\/span><span class=\"p\">);<\/span>\n        <span class=\"n\">_localStorage<\/span><span class=\"p\">.<\/span><span class=\"nf\">Persist<\/span><span class=\"p\">();<\/span>\n\n        <span class=\"k\">return<\/span> <span class=\"nf\">RedirectToPage<\/span><span class=\"p\">(<\/span><span class=\"s\">\"ViewPage\"<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnPostGetFromLocalStorage<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"kt\">var<\/span> <span class=\"n\">person<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_localStorage<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\"><span class=\"n\">Person<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">LocalStorageKey<\/span><span class=\"p\">);<\/span>\n\n        <span class=\"n\">Log<\/span><span class=\"p\">.<\/span><span class=\"nf\">Information<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Person: {person}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">person<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0641\u0627\u06cc\u0644 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media.dev.to\/cdn-cgi\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdoor82q524avwyph7g1h.png\" alt=\"\u0645\u062d\u062a\u0648\u06cc\u0627\u062a \u0641\u0627\u06cc\u0644 \u0645\u062d\u0644\u06cc\" loading=\"lazy\" width=\"800\" height=\"98\" title=\"\"><\/p>\n<h4><span class=\"ez-toc-section\" id=\"%D8%B5%D9%81%D8%AD%D9%87_%D8%AF%D8%B1%DB%8C%D8%A7%D9%81%D8%AA\"><\/span>\n<p>  \u0635\u0641\u062d\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h4>\n<p>\u0627\u0632 \u0647\u0645\u0627\u0646 \u06a9\u0644\u06cc\u062f \u0635\u0641\u062d\u0647 \u0648\u0631\u0648\u062f\u06cc\/\u0648\u0631\u0648\u062f\u06cc \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0634\u062e\u0635 \u062f\u0631 \u0646\u0645\u0648\u0646\u0647 \u062c\u062f\u06cc\u062f\u06cc \u0627\u0632 \u0648\u06cc\u0698\u06af\u06cc Person \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u062f \u0648 \u0646\u0627\u0645 \u0648 \u0646\u0627\u0645 \u062e\u0627\u0646\u0648\u0627\u062f\u06af\u06cc \u0631\u0627 \u062f\u0631 \u0635\u0641\u062d\u0647 \u0646\u0645\u0627\u06cc\u0634 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight csharp\"><code><span class=\"k\">public<\/span> <span class=\"k\">class<\/span> <span class=\"nc\">ViewPageModel<\/span> <span class=\"p\">:<\/span> <span class=\"n\">PageModel<\/span>\n<span class=\"p\">{<\/span>\n    <span class=\"k\">private<\/span> <span class=\"n\">LocalStorage<\/span> <span class=\"n\">_localStorage<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"p\">[<\/span><span class=\"n\">BindProperty<\/span><span class=\"p\">]<\/span>\n    <span class=\"k\">public<\/span> <span class=\"n\">Person<\/span> <span class=\"n\">Person<\/span> <span class=\"p\">{<\/span> <span class=\"k\">get<\/span><span class=\"p\">;<\/span> <span class=\"k\">set<\/span><span class=\"p\">;<\/span> <span class=\"p\">}<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"nf\">ViewPageModel<\/span><span class=\"p\">(<\/span><span class=\"n\">ILocalStorage<\/span> <span class=\"n\">storage<\/span><span class=\"p\">)<\/span> \n        <span class=\"p\">=&gt;<\/span> <span class=\"n\">_localStorage<\/span> <span class=\"p\">=<\/span> <span class=\"n\">storage<\/span> <span class=\"k\">as<\/span> <span class=\"n\">LocalStorage<\/span><span class=\"p\">;<\/span>\n\n    <span class=\"k\">public<\/span> <span class=\"k\">void<\/span> <span class=\"nf\">OnGet<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">{<\/span>\n        <span class=\"n\">Person<\/span> <span class=\"p\">=<\/span> <span class=\"n\">_localStorage<\/span><span class=\"p\">.<\/span><span class=\"n\">Get<\/span><span class=\"p\"><span class=\"n\">Person<\/span><span class=\"p\">&gt;(<\/span><span class=\"n\">LocalSetup<\/span><span class=\"p\">.<\/span><span class=\"n\">Instance<\/span><span class=\"p\">.<\/span><span class=\"n\">Key<\/span><span class=\"p\">);<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<h2><span class=\"ez-toc-section\" id=\"%D8%AE%D9%84%D8%A7%D8%B5%D9%87\"><\/span>\n<p>  \u062e\u0644\u0627\u0635\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u06a9\u062f\u06cc \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u0633\u0631\u0648\u06cc\u0633\u06cc \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a \u06a9\u0647 \u0633\u0627\u0632\u0646\u062f\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0627\u0632 \u0633\u0631\u0648\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u062f. \u0628\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f \u0628\u0631\u0627\u06cc \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0646 \u062f\u0631 \u062c\u0639\u0628\u0647 \u0627\u0628\u0632\u0627\u0631 \u062a\u0648\u0633\u0639\u0647\u200c\u062f\u0647\u0646\u062f\u06af\u0627\u0646 \u0645\u0627\u06cc\u06a9\u0631\u0648\u0633\u0627\u0641\u062a \u0633\u06cc \u0634\u0627\u0631\u067e \u0645\u0641\u06cc\u062f \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f.<\/p>\n<p>\u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u06a9\u062f\u06cc \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0648 \u0630\u062e\u06cc\u0631\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u06cc\u0646 \u062c\u0644\u0633\u0627\u062a \u0648\/\u06cc\u0627 \u0635\u0641\u062d\u0627\u062a \u0628\u0647 \u0627\u0634\u062a\u0631\u0627\u06a9 \u06af\u0630\u0627\u0634\u062a\u0647 \u0634\u0648\u062f\u060c \u06a9\u062f \u06a9\u0646\u06cc\u062f. <\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Summarize this content to 400 words in Persian Lang \u0645\u0642\u062f\u0645\u0647 \u0628\u06cc\u0634\u062a\u0631 \u0646\u0645\u0648\u0646\u0647\u200c\u0647\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u060c \u062e\u062f\u0645\u0627\u062a \u0628\u062f\u0648\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc\u200c\u06a9\u0646\u0646\u062f\u060c \u0645\u0627\u0646\u0646\u062f \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 \u0628\u0631\u0627\u06cc \u062b\u0628\u062a \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u0633\u0627\u062f\u0647. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u062f\u0631\u0633 \u0646\u062d\u0648\u0647 \u062b\u0628\u062a \u0633\u0631\u0648\u06cc\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062f\u0648 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0627\u0632 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f\u060c \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u06cc\u0633 \u062b\u0628\u062a \u0634\u062f\u0647 \u062f\u06cc\u06af\u0631. \u0627\u06cc\u0646 &hellip;<\/p>\n","protected":false},"author":2,"featured_media":73002,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-73001","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/73001","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=73001"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/73001\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/73002"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=73001"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=73001"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=73001"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}