asp.net core mvc 入门demo

标签: Asp.net  asp  .net  mvc

.NET Core

.NET Core 是开放源代码的通用开发平台 (是一个“平台”),基于这个开放平台我们可以开发像ASP.NET Core应用程序, Windows 10 通用 Windows 平台 (UWP),Tizen等等, Microsoft官方团队 和 .NET社区成员共同在 GitHub 上进行维护。 它跨平台(支持 Windows、macOS 和 Linux),并且可用于生成设备、云和 IoT 应用程序。

.NET Core 还具有以下特性:

  1. 跨平台:可以在 Windows、macOS 和 Linux 操作系统上运行。
  2. 跨体系结构保持一致: 在多个体系结构(包括 x64、x86 和 ARM)上以相同的行为运行代码。
  3. 命令行工具: 包括用于本地开发和持续集成方案中的易于使用的命令行工具。
  4. 部署灵活: 可以包含在应用或已安装的并行用户或计算机范围中。 可搭配 Docker 容器使用。
  5. 兼容性:.NET Core 通过 .NET Standard与 .NET Framework、Xamarin 和 Mono 兼容。
  6. 开放源:.NET Core 是一个开放源平台,使用 MIT 和 Apache 2 许可证。 .NET Core 是一个 .NET Foundation 项目。
  7. 由 Microsoft 支持:.NET Core背后依托强大的Microsoft团队 进行维护。

ASP.NET Core优点

  1. 速度 : ASP.NET Core 很快。因为 .NET Core 是编译运行的,执行速度远高于解释执行的语言。与使用 Node.js 写的代码相比,执行速度高出 5-10 倍是很正常的
  2. 生态 ASP.NET Core 可能初出茅庐,但 .NET 却已久经考验。在 NuGet上有成千上万的软件包。可以完成你的大部分需求。
  3. 安全性 微软的开团队很注重安全性,ASP.NET Core 从创建基础就是安全的。它已经自动处理了 净化输入数据 和 跨域伪造请求(CSRF),你就不用操心这些了。你同时还享有 .NET 编译器的静态类型检测的优势,它像个时刻警惕着,还有些强迫症的审校者。这样,在使用一个变量或者某些数据时,那些无意识的错误就插翅难逃。
  4. 跨平台 可以运行在安装了 .NET 运行时库的 Windows、Mac或者Linux上。
  5. 开源 .NET Core 属于开放源(MIT 许可证),由 Microsoft 于 2014 年提供给 .NET Foundation。 现在它是最活跃的 .NET Foundation 项目之一。 可由个人和企业自由采用,包括用于个人、学术或商业目的。 同时开源也就意味着在你出现问题的时候你可以阅读其源代码来获取解决问题的方法,再者你也可以在Gayhub上提Issue

创建.net core入门demo

  1. 点击创建 ASP.Net Core Web 应用程序
    在这里插入图片描述

  2. 创建名为MvcContent
    在这里插入图片描述在这里插入图片描述显示的项目结构如下图,对应文件作用为:
    appsettings.json:配置文件,配置数据库连接字符串等配置信息。
    Program.cs:程序入口文件(里面有个Main方法);
    Startup.cs 启动配置文件 ;
    依赖项:管理项目所依赖的第三方组件的安装,配置,升级
    Controller:控制器 控制Models数据并交与视图
    Models: 将数据库对应的数据就是加载到该文件夹下的实体中
    Views:视图 即将实体数据呈现出来的页面
    在这里插入图片描述

  3. Models下创建需创建两个实体类对象,代码如下:

  public class Content
    {
        /// <summary>
        /// 主键
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 标题
        /// </summary>
        public string Title { get; set; }
        /// <summary>
        /// 内容
        /// </summary>
        public string Detail { get; set; }
        /// <summary>
        /// 状态 1正常 0删除
        /// </summary>
        public int Status { get; set; }
        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime Add_time { get; set; }
        /// <summary>
        /// 修改时间
        /// </summary>
        public DateTime Modify_time { get; set; }
    }
public class ContentViewModel
    {
        public List<Content> Contents { get; set; }
    }
  • Content: 文章实体类,假如需要向某数据库中Content表插入值,我们就可以创建一个Content对象再复制,并配合控制器(controller)将实体值存入数据库中。
  • ContentViewModel:因为Content是作为插入等创建操作的对象,对于需要加载到内存并呈现到视图的数据无能为力,于是我们就创建一个ContentViewModel对象,创建一个Content的List成员对象,已完成数据加载。
  1. 操作实体类,在Controller文件夹下创建ContentController.cs文件

在这里插入图片描述在这里插入图片描述可以看到下图所示页面:
在这里插入图片描述直接将下列代码覆盖原有的ContentController ,并添加一条using MvcContent.Models;

 public class ContentController : Controller
    {
        public IActionResult Index()
        {
            var contents = new List<Content>();
            for (int i = 0; i < 10; i++)
            {
                contents.Add(new Content { Id = i, Title = $"第{i}条数据标题", Detail = $"第{i}条数据的内容", Status = 1, Add_time = DateTime.Now.AddDays(-i) });
            }
            return View(new ContentViewModel { Contents = contents });
        }
    }
  1. 对准Index右键->添加视图,使得contentcontroller的数据可以传到该视图中,添加操作如下图:
    在这里插入图片描述在这里插入图片描述5. 如下图所示,打开程序包管理,输入下方命令,安装Humanizer 使得时间显示更加人性化

Install-Package Humanizer -Version 2.7.9

在这里插入图片描述在这里插入图片描述

  1. 将下方内容复制替换Views/Content/Index.cshtml
@model ContentViewModel
@using Humanizer;
@{
    ViewData["Title"] = "内容列表";
}

<div class="panel panel-default todo-panel">
    <div class="panel-heading">@ViewData["Title"]</div>

    <table class="table table-hover">
        <thead>
            <tr>
                <td> <input type="checkbox" class="done-checkbox"></td>
                <td>序号</td>
                <td>标题</td>
                <td>内容</td>
                <td>添加时间</td>
            </tr>
        </thead>

        @foreach (var item in Model.Contents)
        {
            <tr>
                <td>
                    <input type="checkbox" class="done-checkbox">
                </td>
                <td>@item.Id</td>
                <td>@item.Title</td>
                <td>@item.Detail</td>
                <td>@item.Add_time.Humanize()</td>

            </tr>
        }
    </table>
</div>

解析:可以看到上方代码开头**@model ContentViewModel意为引入我们创建的ContentViewModel**,而后续

 @foreach (var item in Model.Contents)
        {
            <tr>
                <td>
                    <input type="checkbox" class="done-checkbox">
                </td>
                <td>@item.Id</td>
                <td>@item.Title</td>
                <td>@item.Detail</td>
                <td>@item.Add_time.Humanize()</td>

            </tr>
        }

即用**@** 符号在网页上强制执行c#代码,在foreach循环Model.Contents即为ContentViewModel对象中的Contents集合,每个td列都用**@item.content属性名**遍历ContentViewModel中的数据

  1. 在_layout.cshtml中添加如下一个标签,其中asp-controller="Content"以为使用我们刚刚的控制器,action="Index"
    即为使用该控制器中的
    Index
    方法
  <a class="nav-link text-dark" asp-area="" asp-controller="Content" asp-action="Index">Content</a>

在这里插入图片描述

  1. 测试

在这里插入图片描述在这里插入图片描述

版权声明:本文为shark_chili3007原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shark_chili3007/article/details/105420692

智能推荐

[java][事务]tcc事务实战学习过程

学习项目:https://github.com/14251104246/spring-cloud-rest-tcc 下载源码,进入源码目录运行:mvn clean package Docker Compose运行 docker-compose -f infrastructure-compose.yml up -d docker-compose -f basic-ms-compose.yml up ...

[学习记录,]Mybatis入门

环境: Eclipse 2019 Tomcat 9.0 jdk1.8 开搞 首先创建工程 结构如下 导入Jar包 可在mybatis官网下载 http://www.mybatis.cn/82.html 配置文件mybatis-config.xml 事务管理有两种:JDBC和MANAGED JDBC: MANAGED 数据源类型:UNPOOLED、POOLED、JNDI 创建实体类文件User.ja...

运用for语句来判断数组中值得大小

总结: 1将if语句与数组联合起来判断输入中各组中的最大最小值; 2注意:定义的数组数量是躲多少就要输入多少组数据,少输入就无法输出;...

Bridging signals

Bridging signals Time Limit: 1000MSMemory Limit: 10000K Total Submissions: 10926Accepted: 5982 Description 'Oh no, they've done it again', cries the chief designer at the Waferland chip factory. Once ...

一天一大 leet

一天一大 leet 题目(难度:困难): 示例 抛砖引玉 官方答案 高手在民间 菜鸡的自白 20200606 题目(难度:困难): 给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 示例 示例 抛砖引玉 要求算法的时间复杂度为 O(n),即限制了只能循环一次; 先对数组排序 循环数组记录后一个元素等于前一个元素+1或者等于前一个元素的数量 满足条件++,不然重...

猜你喜欢

Tensorflow实现的CNN文本分类

https://blog.csdn.net/somtian/article/details/69359498 原博文, github 在这篇文章中,我们将实现一个类似于Kim Yoon的卷积神经网络语句分类的模型。 本文提出的模型在一系列文本分类任务(如情感分析)中实现了良好的分类性能,并已成为新的文本分类架构的标准基准。 本文假设你已经熟悉了应用于NLP的卷积神经网络的基础知识。 如果没有,建议...

JDBC新手入门教程

开发工具:idea 数据库:mysql jar包:junit-4.10 mysql-connector-java-8.0.18 junit-4.10下载 mysql-connector-java-8.0.18下载 注意1:jdbc的驱动因为使用的是mysql-connector-java-8.0.18,所以为(“com.mysql.cj.jdbc.Driver”),而不是(...

Lua 排序 table.sort

    正如C#中有Array.Sort(),lua中也有自己的排序方法即table.sort(table,function)。     lua中的排序默认是从大到小的排序;     传入一个方法参数,可以使排序从小到大; 打印结果:  ...

SURF算法简述及Python标记SURF特征检测实践

目录 一、SURF算法 1.算法简介 2.SURF与SIFT的具体差异 二、Python代码实践 1.测试环境 2.测试代码 3.核心函数 4.测试结果 一、SURF算法 1.算法简介 SURF(Speeded-Up Robust Features)加速稳健特征,是一种稳健的局部特征点检测和描述算法。 SURF是对SIFT算法的改进,该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 S...

Selenium3自动化测试——19.读取数据文件

1. 实现目标 在测试与开发中,经常需要对文件进行各种读取操作。这里介绍针对txt、csv、xml、json文件的读取。 2. 读取TXT文件 2.1 user_info.txt文件 2.2 读取txt文件.py 2.3 实现结果 3. 读取csv文件 3.1 user_info.csv  这里要注意,csv文件本身打开是utf-8的,而不是乱码 3.2 读取csv文件.py 这里,针对...