C# 如何使用Razor页面从ASP.net核心简单web应用的配置中读取json对象数组
我是.Net新手,使用.NETCore创建简单的web应用程序。目前,它正在使用Razor页面进行视图及其静态内容 这是项目结构 现在,我正在基于一些JSON配置使这个页面的内容变得动态。因此,根据微软的文档,我只是在appsetting.json文件中添加一些内容,以读取json并将其传递给如下视图 以下是我的appsettings.json,如果我在此处更改此VideoProperties URL,它将反映整个应用程序中的任何地方C# 如何使用Razor页面从ASP.net核心简单web应用的配置中读取json对象数组,c#,asp.net,asp.net-core,razor-pages,asp.net-core-configuration,C#,Asp.net,Asp.net Core,Razor Pages,Asp.net Core Configuration,我是.Net新手,使用.NETCore创建简单的web应用程序。目前,它正在使用Razor页面进行视图及其静态内容 这是项目结构 现在,我正在基于一些JSON配置使这个页面的内容变得动态。因此,根据微软的文档,我只是在appsetting.json文件中添加一些内容,以读取json并将其传递给如下视图 以下是我的appsettings.json,如果我在此处更改此VideoProperties URL,它将反映整个应用程序中的任何地方 { "AllowedHosts":
{
"AllowedHosts": "*",
"Logging": {
"LogLevel": {
"Default": "Warning"
}
},
"MyVars": [
{
"name": "abcd",
"avatar": "abcd",
"media": "abcd",
"category": "abcd",
"subCategory": "abcd",
"order": 30,
"slide": 30
},
{
"name": "abcd",
"avatar": "abcd",
"media": "abcd",
"category": "abcd",
"subCategory": "abcd",
"order": 30,
"slide": 30
},
{
"name": "abcd",
"avatar": "abcd",
"media": "abcd",
"category": "abcd",
"subCategory": "abcd",
"order": 30,
"slide": 30
},
{
"name": "abcd",
"avatar": "abcd",
"media": "abcd",
"category": "abcd",
"subCategory": "abcd",
"order": 30,
"slide": 30
},
{
"name": "abcd",
"avatar": "abcd",
"media": "abcd",
"category": "abcd",
"subCategory": "abcd",
"order": 30,
"slide": 30
}
],
"VideoProperties": {
"EmployeeSpeaksVideoUrl": "abcd1P7vBCYAuFczLD6pojJu0a3xYdbdsDhLj",
"AppSupportVideoUrl": "abcd1nfi9DvdNOlE2tj2CLUdweIpkT8vyfBnh",
"ClientSpeaksVideoUrl": "abcd1wvLgpCUJg6cTatI5TjIa-eNBI88JcXlt",
"CloudVideoUrl": "abcd1ipwoyeGjhq8ouwgfx_NsyS2Xd3ZFCnnK",
"CovidVideoUrl": "abcd1wvLgpCUJg6cTatI5TjIa-eNBI88JcXlt",
"FunAtWorkVideoUrl": "abcd14wLg8pM2xNtnd5ZZewism8snlLe9A4Ab",
"KidsAtWorkVideoUrl": "abcd1PuJVNuaxhfvuG7RMqEwVrzJ1VwsEvjIw",
"BirthdayVideoUrl": "abcd1JjYoe9TGhWU04qzydyz6OtL2ZT6LS8rB",
"PongalVideoUrl": "abcd10IKZpaAKCLeiyJ2sTAzdESzzyro0DSGx",
"WomensDayVideoUrl": "abcd1NLe_TNIin9rcekGUtVEpCpoy_4Cl_SFh",
"NavratriVideoUrl": "abcd19NyLjLLtPBvz-0iYvMsxt9RQrFko8uSd",
"ChristmasVideoUrl": "abcd1Siwptmm5r_0p7Y6MR6Y6YbCe_zcJ12fS",
"AnnualPicnicVideoUrl": "abcd1Dd3atu0vRgGQqVFDJ3ZjiH3YNjdBg_4B",
"CSRVideoUrl": "abcd1wRmwtnesLkFruwVy-BRjCf-8omWeMtcm",
"GlanceVideoUrl": "abcd1wvLgpCUJg6cTatI5TjIa-eNBI88JcXlt",
"HRVideoUrl": "abcd1OA0MyrJz3Ti1HYUH4b3R2Q2yxJsGngig",
"IntroVideoUrl": "abcd14wLg8pM2xNtnd5ZZewism8snlLe9A4Ab",
"ITSupportVideoUrl": "abcd1XITYeIFwFaleKiO1Hf3E4u5NnYavSvuz",
"ProductVideoUrl": "abcd1EgQtDl8nO4xe9ePycMbK42d7Q6pOd_Vi",
"SecurityVideoUrl": "abcd1XITYeIFwFaleKiO1Hf3E4u5NnYavSvuz",
"TestingVideoUrl": "abcd12Mx7mJN6tgr7Z80uinPd89BhTuIaZTc7",
"USVideoUrl": "abcd1wvLgpCUJg6cTatI5TjIa-eNBI88JcXlt"
}
}
将其添加到Startup.cs文件中
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.Configure<VideoProperties>(Configuration.GetSection("VideoProperties"));
services.AddRazorPages();
}
在.cshtml文件中,我没有得到这个for循环的任何输出。我不确定这里出了什么问题。如何在Razor页面中获取json对象数组,我还需要在同一页面javascript中使用thois。这里是一个工作演示: 改变
services.Configure<List<MyVars>>(options => Configuration.GetSection("MyVars").GetChildren());
services.Configure(选项=>Configuration.GetSection(“MyVars”).GetChildren());
到
services.Configure(Configuration.GetSection(“MyVars”);
RazorPage:
@page
@inject IOptions<List<MyVars>> l
<div>
@foreach (var item in l.Value)
{
<div>@item.Avatar</div>
}
</div>
@page
@注射碘油
@foreach(l.值中的var项目)
{
@物品.化身
}
结果:
如何调用appsetting.json文件?我建议您是否可以使用字符串Host=new ConfigurationBuilder().AddJsonFile(“appsettings.json”).Build().GetSection(“parent”)[“child”].Trim();为了访问appsetting.json文件,我建议您参考下面提到的URL,了解一下()。
@page
@using Microsoft.Extensions.Options;
@inject IOptions<aspnet_core_dotnet_core.Models.VideoProperties> videoUrl
@inject IOptions<List<aspnet_core_dotnet_core.Models.CeiTour>> tours
@model IndexModel
@{
ViewData["Title"] = "Mive ";
}
<video width="100%" autoplay muted loop id="my-video" @*style="max-height: 550px;"*@>
<source src=@videoUrl.Value.IntroVideoUrl type="video/mp4">
Your browser does not support HTML5 video.
</video>
<div>
@foreach (var item in @tours.Value)
{
<div>@item.Avatar</div>
}
</div>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace aspnet_core_dotnet_core.Models
{
public class MyVars
{
public string Name { get; set; }
public string Avatar { get; set; }
public string Media { get; set; }
public string Category { get; set; }
public string SubCategory { get; set; }
public long Order { get; set; }
public long Slide { get; set; }
}
}
services.Configure<List<MyVars>>(options => Configuration.GetSection("MyVars").GetChildren());
services.Configure<List<MyVars>>(Configuration.GetSection("MyVars"));
@page
@inject IOptions<List<MyVars>> l
<div>
@foreach (var item in l.Value)
{
<div>@item.Avatar</div>
}
</div>