zoukankan      html  css  js  c++  java
  • asp.net core轻松入门之MVC中Options读取配置文件

    接上一篇中讲到利用Bind方法读取配置文件

    ASP.NET Core轻松入门Bind读取配置文件到C#实例

    那么在这篇文章中,我将在上一篇文章的基础上,利用Options方法读取配置文件

    首先注册MVC服务并添加MVC路由

    注册MVC的方法是在ConfigureServices中添加

     services.AddMvc();

    添加MVC路由的方法是在Configure中添加
      app.UseMvcWithDefaultRoute();

    然后在项目中添加Controllers文件夹和Views文件夹,然后在Controllers文件夹中添加home控制器 ,方法是在该文件加有几-》添加-》控制器

    选择MVC控制器,并给该控制器命名为HomeControllers   控制器是必须以Controllers结尾的

    然后选中控制器中的Index方法  右键菜单,选择添加视图,不要勾选,使用模板页,因为我们是一个空项目,没有模板的

    加入视图后,回到home控制器,添加Class实例并利用HomeController的构造函数给该实例赋值,注意,就是在此处使用到了Options方法

    private Class myClass;
    
            public HomeController(IOptions<Class> myClass)
            {
                this.myClass = myClass.Value;
            }
    
    然后修改Index方法,将myClass实例传递给视图。
      public IActionResult Index()
            {
                return View(myClass);
            }

    回到Index视图中,在文件的顶部指定model的类型为 Class类型,然后利用html代码进行输出。
    @model BindReader.Class
    @{
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <h2>@Model.Name</h2>
    @foreach (var item in Model.Items)
    {
        <div>
            <h2>@item.Language</h2>
            <h2>@item.Tool</h2>
        </div>
    }
    <body>
    </body>
    </html>

    最后,回到StartUp.cs  进行Class的依赖注入,注入的方法是在ConfigureServices添加以下代码,因为系统会自动读取appsettings.json中的信息,其内的具体内容在上一文章中有介绍。
     services.Configure<Class>(Configuration);

    最后,我们需要吧Configure中的app.Run方法进行注释,因为该方法会阻塞管道,影响mvc的正常工作。


    最后,可以运行查看效果了。


    其实还有不需要在home控制器中利用构造函数引入myClass的方法,我们可以直接在利用Options方法读取Class信息,需要将home控制器中构造函数中的代码注释,删除Index 方法中Return View(myClass)的myClass  因为此时myClass是空的。

    然后Index控制器中修改后的代码如下:

    @using BindReader
    @using Microsoft.Extensions.Options
    @inject IOptions<Class> classAccess
    @{
        Layout = null;
    }
    <!DOCTYPE html>
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <h2>@classAccess.Value.Name</h2>
    @foreach (var item in classAccess.Value.Items)
    {
        <div>
            <h2>@item.Language</h2>
            <h2>@item.Tool</h2>
        </div>
    }
    <body>
    </body>
    </html>
    

    项目的完整代码GitHub地址:https://github.com/liuzhenyulive/BindReader

    有任何疑问可以在文章下方评论留言。


  • 相关阅读:
    炒股,短线学习
    炒股,短线学习
    截图贴图snipaste工具有什么用处、ppt疯狂小插件iSlide —— 最好用的PPT插件,人手必备
    截图贴图snipaste工具有什么用处、ppt疯狂小插件iSlide —— 最好用的PPT插件,人手必备
    截图贴图snipaste工具有什么用处
    网络模拟工具使用和学习GNS3+Wireshark
    VS Code行内样式提示插件
    javascript 两张图片切换 三目运算符
    小程序获取openid 小程序授权
    小程序点击跳转外部链接 微信小程序提示:不支持打开非业务域名怎么办 使用web-view 配置业务域名
  • 原文地址:https://www.cnblogs.com/CoderAyu/p/8490135.html
Copyright © 2011-2022 走看看