准备工作:
新建ConfigurationInfo文件夹,在该文件夹下新建类ConnectionStrings.cs(见配置部分ASP.NET 8 配置文件-CSDN博客)
步骤:
1、新建ComponentExt文件夹,在该文件夹下新建类ConfigurationViewComponent.cs(ViewComponent是固定写法,类似Controller)
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using WebApplication1.Utility.ConfigurationInfo;
namespace WebApplication1.Utility.ComponentExt
{
public class ConfigurationViewComponet : ViewComponent
{
private readonly IConfiguration configuration;
private readonly ConnectionStrings connectionStrings;
private readonly ConnectionStrings options;
public ConfigurationViewComponet(IConfiguration configuration,
IOptionsMonitor<ConnectionStrings> optionsMonitor, IOptions<ConnectionStrings> options)
{
this.configuration = configuration;
this.connectionStrings = optionsMonitor.CurrentValue;
this.options = options.Value;
}
//同步和异步方法只能用一个
//public IViewComponentResult Invoke()
//{
// return View("~/Utility/ComponentExt/Views/ConfigurationView", options);
//}
public async Task<IViewComponentResult> InvokeAsync()
{
return await Task.FromResult(View("~/Utility/ComponentExt/Views/ConfigurationView.cshtml", options));
}
}
}
2、在ComponentExt文件夹下新建文件夹Views,在Views中添加视图ConfigurationView.cshtml
@using WebApplication1.Utility.ConfigurationInfo;
@model ConnectionStrings
@*
For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
*@
@{
}
<h1>配置文件信息如下:</h1>
<h2>@Model.WriteConnection</h2>
@foreach(var item in @Model.ReadConnectionList)
{
<h3>@item</h3>
}
3、使用,在视图文件中添加如下代码,调用名称中不用写ViewComponent
@await Component.InvokeAsync("Configuration");