【问题标题】:Global variable for web api base URL for BlazorBlazor 的 Web api 基本 URL 的全局变量
【发布时间】:2020-07-09 10:06:04
【问题描述】:

目前,我有这个正在工作的 Blazor(服务器项目),它只有一个按钮,可以发出 Web Api GET 请求,它可以正常工作。

这是我的ConfigureServices 方法

public void ConfigureServices(IServiceCollection services)
    {
        services.AddRazorPages();
        services.AddServerSideBlazor();
        services.AddSingleton<HttpClient>();         
    }

在我的Index.razor

@page "/"
@inject HttpClient http;
@using Models

<button @onclick="@GetMovies">Get Movies</button>

<table>
    <thead>
        <tr><th>Movie</th></tr>
    </thead>
    <tbody>
        @foreach(var movie in @Movies)
        {
        <tr><td>@movie.MovieTitle</td></tr>
        }
    </tbody>
</table>

@code{
    List<Movie> Movies;

    private async Task GetMovies()
    {
        Movies = await http.GetJsonAsync<List<Movie>>("http://localhost:54124/api/Movies");
    }
}

如何将http://localhost:54124 像全局变量一样放入一个位置?在ConfigureServices 方法上做吗?

【问题讨论】:

    标签: c# blazor blazor-server-side


    【解决方案1】:

    你应该把它存储在appsettings.json

    如果您使用的是 WASM,appsettings.json 将在 wwwroot 中。

    要从中获取价值,您可以查看this question 的答案,我根据 .net 核心的版本进行了更改,并且有不止一种方法可以做到这一点。

    【讨论】:

      【解决方案2】:

      1- 创建一个类

      public class GlobalVariable
      {
          public static string Test { get; set; } = "any thing";
      } 
      

      2- 将其作为单例

      Services.AddSingleton<GlobalVariable>();
      

      在客户端把它放在programm.cs文件中 在服务器端把它放在startup.cs文件中

      现在你可以在任何地方使用它了

      GlobalVariable.Test
      

      我的参考:https://github.com/dodyg

      【讨论】:

      • 与依赖注入结合使用时不应使用静态参数。您应该使用非静态变量,然后注入 GlobalVariable 的实例(使用注入机制)以获取您在 AddSingleton 行中声明的实例
      猜你喜欢
      • 2016-10-27
      • 2012-06-28
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多