ABP.NET Core学习1
it发烧友吧
全部回复
仅看楼主
level 12
//从JSON文件里面读取数据
var builder = new ConfigurationBuilder().AddJsonFile("test.json");
var configuration = builder.Build();
Console.WriteLine($"class:{configuration["class"]}");
Console.WriteLine(configuration["message:0:name1"]);
Console.WriteLine(configuration["message:0:age1"]);
Console.WriteLine(configuration["message:1:name2"]);
Console.WriteLine(configuration["message:1:age2"]);
Console.WriteLine("ok");
Console.ReadKey();
需要注意的是:JSON文件右键属性将生成操作改为内容,复制到输出目录改为始终复制。
test.json内容如下:
{
"class": "类",
"message": [
{
"name1": "姓名1",
"age1": 21
},
{
"name2": "姓名2",
"age2": 23
}
]
}
2018年05月06日 15点05分 1
level 12
//根据class定义类获取JSON内容
Startup启动类:
public IConfiguration Configuration { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
app.Run(async (context) =>
{
var myClass=new Student();
Configuration.Bind(myClass);
await context.Response.WriteAsync($"Classname:{myClass.Classname}---");
await context.Response.WriteAsync($"{myClass.Message.Count}:Message---");
});
--class类代码如下:
public class Student
{
public string Classname { get;set;}
public List<Message> Message { get; set; }
}
public class Message
{
public string Name { get; set; }
public string Age { get; set; }
}
--appsettings.json配置文件如下:
{
"Classname": "class",
"Message": [
{
"Name": "姓名1",
"Age": 21
},
{
"Name": "姓名2",
"Age": 23
}
]
}
------------------------------------------------------------------------------------------------------------------------------------
2018年05月06日 16点05分 2
level 12
//在Controller视图展示数据
第一种:
--Controller代码
public class HomeController : Controller
{
private readonly Student _myStu;
public HomeController(IOptions<Student> stu)
{
_myStu = stu.Value;
}
public IActionResult Index()
{
return View(_myStu);
}
}
--视图代码:
@model OptionBindSample.Student
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<h4>Name:@Model.Classname</h4>
<div>
@foreach (var data in Model.Message)
{
<span>@data.Name</span>
<span>@data.Age</span>
}
</div>
第二种:
--Controller代码:
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
--视图代码:
@using Microsoft.Extensions.Options
@inject IOptions<OptionBindSample.Student> MyStu
@{
ViewData["Title"] = "Index";
}
<h2>Index</h2>
<h4>Name:@MyStu.Classname</h4>
<div>
@foreach (var data in MyStu.Message)
{
<span>@data.Name</span>
<span>@data.Age</span>
}
</div>
2018年05月07日 15点05分 4
level 12
//在视图设置开启热更新
@inject IOptionsSnapshot<OptionBindSample.Student> MyStu
@*热更新,将IOptions改为IOptionsSnapshot*@
通过后台设置Program.cs文件关闭热更新
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration(config => { //关掉热更新
config.AddJsonFile("appsettings.json", false, false);
})
.UseStartup<Startup>()
.Build();
2018年05月07日 15点05分 5
1