Bind,Options读取配置到C#实例
首先创建一个网站 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#实例的更多相关文章
- 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我 ...
- 菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options
命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来 ...
- Bind读取配置到C#实例
1.创建一个空的ASP.NET Core Web 应用程序 2.程序包管理控制台执行Install-Package Microsoft.AspNetCore -Version 2.0.1 3.创建js ...
- (十二)Bind读取配置到C#实例
继续上一节的,接下来用Options或者Bind把json文件里的配置转成C#的实体,相互之间映射起来.首先新建一个asp.net core mvc项目OptionsBindSample Startu ...
- 任务12:Bind读取配置到C#实例
将json文件的配置转换成C#的实体 新建项目: Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definition ...
- 使用Bind读取配置到C#的实例
在之前的一篇二级域名绑定的文章<.Net Core 二级域名绑定到指定的控制器>中,有一个小的地方是关于读取Json文件的配置信息的,当时是用了读取文件流的方式,一直以来觉得该方法太Low ...
- .NET Core采用的全新配置系统[1]: 读取配置数据
提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置定义在这两个文 ...
- ASP.NET Core的配置(5):配置的同步[ 实例篇]
ConfigurationBuilder在生成以Configuration对象的时候会利用注册其中的ConfigurationProvider加载原始的配置数据,那么一旦配置源中的数据发生变化,应用程 ...
- asp.net core轻松入门之MVC中Options读取配置文件
接上一篇中讲到利用Bind方法读取配置文件 ASP.NET Core轻松入门Bind读取配置文件到C#实例 那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件 首先注册MV ...
随机推荐
- HDU 1255 覆盖的面积 (线段树扫描线+面积交)
自己YY了一个的写法,不过时间复杂度太高了,网上的想法太6了 题意:给你一些矩阵,求出矩阵的面积并 首先按照x轴离散化线段到线段树上(因为是找连续区间,所以段建树更加好做). 然后我们可以想一下怎样 ...
- F1 score,micro F1score,macro F1score 的定义
F1 score,micro F1score,macro F1score 的定义 2018年09月28日 19:30:08 wanglei_1996 阅读数 976 本篇博客可能会继续更新 最近在 ...
- GridView行中按钮的使用
转载自:http://blog.csdn.net/hongdi/article/details/6455947 GridView行中按钮的使用 在web项目的过程中,特别是开发ASP.NET应用程序, ...
- 分享知识-快乐自己:redis集群搭建
Redis介绍: 1.开源的NoSql数据库 2.C语言编写 3.基于内存运行,并且支持持久化 4.Key value存储 5.是主流的Nosql数据库之一 Redis优点: 1.内存使用方面,表现优 ...
- How to reduce Index size on disk?减少ES索引大小的一些小手段
ES索引文件瘦身总结如下: 原始数据:(1)学习splunk,原始data存big string(2)原始文件还可以再度压缩倒排索引:(1)去掉不必要的倒排索引信息:例如文件位置倒排._source和 ...
- 【遍历二叉树】05二叉树的层次遍历II【Binary Tree Level Order Traversal II】
就把vector改成用栈类存放层次遍历的一层的序列 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ...
- ffmpeg捕捉摄像头发送rtmp
打印 DirectShow 支持的设备列表(true 可用1替换): ffmpeg -list_devices true -f dshow -i dummy 本计算机打印出的信息如下:[dshow @ ...
- [HDU5290]Bombing plan
vjudge sol 树DP. 首先把模型转换成:每个点可以控制与它距离不超过\(w_i\)的点,先要求选出数量最少的点控制所有点. 设\(f[i][-100...100]\)表示\(i\)号点向上还 ...
- poj 2000 Gold Coins(水题)
一.Description The king pays his loyal knight in gold coins. On the first day of his service, the kni ...
- Java精度计算与舍入
用到的类: 类 BigDecimal:不可变的.任意精度的有符号十进制数.BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成.如果为零或正数,则标度是小数点后 ...