.net core 控制器中获取appsettings.json中的配置项

创建与配置相同的实体类

1、单个实体对象

appsettings.json 中配置代码

 "AppSetting": {
    "SSOPassport": "http://localhost:1908", //webapi接口地址
    "Version": "1.0" //如果为demo,则屏蔽Post请求
  }

实体类对象代码

using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Rextec.SOA.MVC.Models
{
    public  class AppSetting
    {
        /// <summary>
        /// SSO地址
        /// </summary>
        public string SSOPassport { get; set; }

        /// <summary>
        /// 版本信息
        /// 如果为demo,则屏蔽Post请求
        /// </summary>
        public  string Version { get; set; }

        public AppSetting(IConfiguration config)
        {
            SSOPassport = config["AppSetting:SSOPassport"];
            Version = config["AppSetting:Version"];
        }
    }
}

2、Json数组对象

appsettings.json 中配置代码

 "Menus": [
    {
      "MenuItem": {
        "MenuName": "模块管理",
        "Url": "/",
        "IconName": "layui-icon-app",
        "SortNo": 1
      },
      "Children": [
        {
          "MenuName": "应用管理",
          "Url": "/SystemManager/ApplicationList",
          "IconName": "layui-icon-website",
          "SortNo": 1
        },
        {
          "MenuName": "菜单管理",
          "Url": "/SystemManager/MenuList",
          "IconName": "layui-icon-template-1",
          "SortNo": 2
        }
      ]
    },
    {
      "MenuItem": {
        "MenuName": "系统管理",
        "Url": "/",
        "IconName": "layui-icon-set",
        "SortNo": 2
      },
      "Children": [
        {
          "MenuName": "组织机构管理",
          "Url": "/SystemManager/OrganizationList",
          "IconName": "layui-icon-group",
          "SortNo": 1
        },
        {
          "MenuName": "角色管理",
          "Url": "/SystemManager/RoleList",
          "IconName": "layui-icon-component",
          "SortNo": 2
        },
        {
          "MenuName": "人员管理",
          "Url": "/SystemManager/UserList",
          "IconName": "layui-icon-user",
          "SortNo": 3
        }
      ]
    }
  ]

实体类对象代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.Options;

namespace Rextec.SOA.MVC.Models
{
    /// <summary>
    /// 菜单
    /// </summary>
    public class Menus
    {
        public List<MenusInfo> MenusInfos { get; set; }
        public Menus(IOptions<List<MenusInfo>> options)
        {
            MenusInfos = options.Value;
        }
    }
    /// <summary>
    /// 菜单信息
    /// </summary>
    public class MenuItem
    {
        /// <summary>
        /// 菜单名称
        /// </summary>
        public string MenuName { get; set; }
        /// <summary>
        /// 请求路径
        /// </summary>
        public string Url { get; set; }
        /// <summary>
        /// 菜单排序
        /// </summary>
        public int SortNo { get; set; }
        /// <summary>
        /// 菜单图标
        /// </summary>
        public string IconName { get; set; }
    }
    public class MenusInfo
    {
        /// <summary>
        /// 父级菜单
        /// </summary>
        public MenuItem MenuItem { get; set; }
        /// <summary>
        /// 二级菜单
        /// </summary>
        public List<MenuItem> Children { get; set; }
    }
}

3、startup中相关代码

            services.AddSingleton<AppSetting>();
            services.AddOptions();
            services.Configure<List<MenusInfo>>(Configuration.GetSection("Menus"));

4、控制器获取数据实现

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
using Rextec.SOA.MVC.Models;
using Rextec.SOA.Infrastructure;

namespace Rextec.SOA.MVC.Controllers
{
    public class HomeController : Controller
    {
        private readonly IConfiguration configuration;
        private readonly IOptions<List<MenusInfo>> menusInfos;
        public HomeController(IConfiguration _configuration, IOptions<List<MenusInfo>> _menusInfos)
        {
            configuration = _configuration;
            menusInfos = _menusInfos;
        }
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Main()
        {
            return View();
        }
        public ActionResult Git()
        {
            return View();
        }
        /// <summary>
        /// 获取apiUrl
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public string GetWebApiUrl()
        {
            string apiUrl= configuration.GetSection("AppSetting:SSOPassport").Value;
            return apiUrl;
        }
        /// <summary>
        /// 加载菜单
        /// </summary>
        /// <returns></returns>
        [HttpGet]
        public string GetMenu()
        {
            var menus = menusInfos.Value;
            return JsonHelper.Instance.Serialize(menus);
        }
    }
}

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值