首先创建一个网站 Asp.net Core Mvc 空网站 起名叫做OptionsBindSample

通过Option和Bind将Json文件里面的配置转成C#里面的一个实体,相互之间映射起来

Bind将Json文件里面的配置转成实例

打开Startup.cs,由于要使用Configuration

using Microsoft.Extensions.Configuration;

    public class Startup
{
public IConfiguration Configuration { get; set; }
/// <summary>
/// 依赖注入
/// </summary>
/// <param name="configuration"></param>
public Startup(IConfiguration configuration)
{
this.Configuration = configuration;
}

然后就可以使用Configuration了

准备动作,创建一个Class类

public class Class
{
public string ClassNo { get; set; }
public string ClassDesc { get; set; }
public List<Student> Students { get; set; }
}
public class Student
{
public string name { get; set; }
public string Age { get; set; }
}

然后这次添加一个json文件,叫Appsettings.json,这也就是以前Config文件

为什么叫这个名字,因为IWebHost 会自动将Appsettings.json配置信息读取到Configuration中

namespace OptionsBindSample
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
} public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)//会默认将appsettings.json 读取
.UseStartup<Startup>()
.Build();
}
}

然后在Startup类里面中的Configure方法中

        // 运行时调用此方法。使用此方法配置HTTP请求管道。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IConfiguration configuration, IApplicationLifetime applicationLifetime)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} app.Run(async (context) =>
{
var myClass = new Class();
Configuration.Bind(myClass);//绑定实体
//输出到界面信息
await context.Response.WriteAsync($"ClassNo:{myClass.ClassNo}");
await context.Response.WriteAsync($"ClassDesc:{myClass.ClassDesc}");
foreach (var item in myClass.Students)
{
await context.Response.WriteAsync($"name:{item.name}");
await context.Response.WriteAsync($"Age:{item.Age}");
} });
}

Option方式

准备 创建Controllers,Views文件夹,Controllers里面添加HomeController,Views里面创建Home文件夹添加Index.cshtml视图

首先在Startup类里面 注释掉app.Run,否则Mvc请求管道会抵,并启动默认路由

ConfigureServices 方法中添加MVC依赖注入的配置

        // 运行时调用此方法。使用此方法向容器添加服务。
//为更多的信息关于如何配置你的应用程序,访问https://go.microsoft.com/fwlink/?linkid = 398940
public void ConfigureServices(IServiceCollection services)
{
       services.Configure<Class>(Configuration);//注册Class
services.AddMvc();//MVC依赖注入配置 }

在控制器中使用依赖注入,在HomeController

using Microsoft.Extensions.Options;
public class HomeController : Controller
{
private readonly Class _myclass;
//Options
public HomeController(IOptions<Class> classAccesser)
{
this._myclass = classAccesser.Value;
}
public IActionResult Index()
{
return View(_myclass);
}
}

对应的视图 Index.cshtml

@model OptionsBindSample.Class
@{
ViewData["Title"] = "Index";
} <h2>Index</h2>
<h4>Class No @Model.ClassNo</h4>
<h4>ClassDesc @Model.ClassDesc</h4>
<h3>Students</h3>
<div>
@foreach (var item in Model.Students)
{
<span>@item.name</span>
<span>@item.Age</span>
}
</div>

结果显示

另一种方式控制器中不用options 直接在视图中创建

结果是相同的

 

Bind,Options读取配置到C#实例的更多相关文章

  1. 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options

    命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我 ...

  2. 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options

      命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来 ...

  3. Bind读取配置到C#实例

    1.创建一个空的ASP.NET Core Web 应用程序 2.程序包管理控制台执行Install-Package Microsoft.AspNetCore -Version 2.0.1 3.创建js ...

  4. (十二)Bind读取配置到C#实例

    继续上一节的,接下来用Options或者Bind把json文件里的配置转成C#的实体,相互之间映射起来.首先新建一个asp.net core mvc项目OptionsBindSample Startu ...

  5. 任务12:Bind读取配置到C#实例

    将json文件的配置转换成C#的实体 新建项目: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definition ...

  6. 使用Bind读取配置到C#的实例

    在之前的一篇二级域名绑定的文章<.Net Core 二级域名绑定到指定的控制器>中,有一个小的地方是关于读取Json文件的配置信息的,当时是用了读取文件流的方式,一直以来觉得该方法太Low ...

  7. .NET Core采用的全新配置系统[1]: 读取配置数据

    提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...

  8. ASP.NET Core的配置(5):配置的同步[ 实例篇]

    ConfigurationBuilder在生成以Configuration对象的时候会利用注册其中的ConfigurationProvider加载原始的配置数据,那么一旦配置源中的数据发生变化,应用程 ...

  9. asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...

随机推荐

  1. POJ 2240 Arbitrage(Floyed-Warshall算法)

    题意:给出n种货币,m种兑换比率(一种货币兑换为另一种货币的比率),判断测试用例中套汇是否可行.(套汇的意思就是在经过一系列的货币兑换之后,是否可以获利.例如:货币i→货币j→货币i,这样兑换后,是否 ...

  2. ACM学习历程—HDU5478 Can you find it(数论)(2015上海网赛11题)

    Problem Description Given a prime number C(1≤C≤2×105), and three integers k1, b1, k2 (1≤k1,k2,b1≤109 ...

  3. bzoj 4031: 小Z的房间 矩阵树定理

    bzoj 4031: 小Z的房间 矩阵树定理 题目: 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时 ...

  4. XMPP群聊消息重复,自己收到自己发出的消息,群警告消息如何屏蔽

    在XMPP的"groupchat"中,创建群的时候会收到群发的"This room is locked from entry until configuration is ...

  5. python xml包 xml.etree.ElementTree使用记录

    19.7.1 教程 这是一个简短的教程使用xml.etree.ElementTree(简称为et).目标是展示一些构建模块和模块的基本概念 9.7.1.1. XML tree and elements ...

  6. Azure CLI下载Azure Storage Container内的所有文件

    在某些场景下,客户需要把Azure Storage的某一个container内的内容都下载到本地.当然采用PowerShell可以定时的进行下载的动作,但有时客户的环境是Linux或MacOS,这时需 ...

  7. 修改initrd.img里ko文件的一个小tips

    在经历以下步骤解开initrd.img文件之后: 若file initrd.img 指示initrd.img为gzip文件,则2: mv initrd.img initrd.gz gunzip -d ...

  8. python version 2.7 required,which was not found in

    python version 2.7 required,which was not found in 出现上面这种情况的原因我推测有两种: 1.NumPy和SciPy官方网站上只提供了32bit的文件 ...

  9. numpy.matlib.randn(标准正态分布)

    #网址 http://docs.scipy.org/doc/numpy/reference/generated/numpy.matlib.randn.html#numpy.matlib.randn n ...

  10. Tiny4412学习杂记

    1.Android 挂载NFS 使用 busybox mount 来替代mount命令 2.修改Uboot中fastboot最大buff  使用U-boot烧写Android5.0的时候出现 remo ...