【问题标题】:Value from appsettings.json in model .net core来自模型 .net 核心中 appsettings.json 的值
【发布时间】:2021-01-05 00:33:49
【问题描述】:

在我的模型类中,我试图根据环境(开发、生产)从 appsettings.json 中读取一个值并设置图像的 CDN url。它是一个 .net 核心应用程序。

型号

public class Person
{
   public int Id  { get; set; }

   public int ProfileImageUrl => $"{Configuration["CdnUrl"]}/profiles/{Id}.jpg"
}

Index.cshtml(剃刀页面)

@page
@model IndexModel

<img src="@Model.ProfileImageUrl " />

Index.cshtml.cs

public async Task OnGetAsync()
{
    Person = await _context.Person.FirstAsync();
}

应用设置

appsettings.Development.json
{
   "CdnUrl": "/images"
}

appsettings.Production.json
{
   "CdnUrl": "https://images.domain.com"
}

我怎样才能做到这一点?提前致谢

【问题讨论】:

  • 配置源是什么?例如,您是否使用内置的 ASP.NET Core 配置服务?
  • 这是一个 ASP.NET Core MVC 应用程序吗?
  • 是.net核心。它在标题和标签中说明。它也添加到评论中
  • .NET Core 有多种应用模型,MVC 应用模型就是其中之一。你正在构建一个 MVC 应用程序吗?

标签: c# asp.net-core .net-core


【解决方案1】:

有一个简单的方法可以做到这一点。由于您已经在 appsettings.json 文件中配置了 CdnUrl,让我们创建一个带有 IConfiguration 属性的 TagHelper注入,以便我们可以在运行时计算最终的 URL:

[HtmlTargetElement("cdn-img")]
public class CdnImgTagHelper : TagHelper
{
    public IConfiguration Configuration{ get; set; } 
    public CdnImgTagHelper(IConfiguration configuration) {
        this.Configuration = configuration;
    }
    public string Src { get; set; }
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "img";

        var CdnUrlBase = Configuration["CdnUrl"];
        // make sure CndUrlBase endwith "/"
        if (String.IsNullOrEmpty(CdnUrlBase)) { CdnUrlBase ="/"; }
        if (!CdnUrlBase.EndsWith("/")) { CdnUrlBase = CdnUrlBase + "/"; }

        // make sure src don't start with "/"
        if (Src.StartsWith("/")) { Src= Src.Substring(0, Src.Length - 1); }

        output.Attributes.SetAttribute("src", CdnUrlBase + Src);
    }
}

CdnImgTagHelper 导入您的 _ViewsImports 文件后,我们可以这样使用它:

<cdn-img src="mfcpv.png"></cdn-img>

因为我已经用

配置了我的 appsettings.json
"CdnUrl": "https://i.stack.imgur.com"

生成的img如下:

【讨论】:

    猜你喜欢
    • 2018-04-07
    • 1970-01-01
    • 2021-09-13
    • 1970-01-01
    • 2018-05-12
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多