小白入门C#初探Web简易页面显示信息小案例

news2024/12/24 10:37:35

1、创建新项目

  • 选择ASP.NET Core Web应用(模型-视图-控制器),然后点击下一步。
    在这里插入图片描述

  • 然后在项目名称里面填写CSharpDemo,点击下一步,直至创建即可。
    在这里插入图片描述
    在这里插入图片描述

  • 目录结构:
    在这里插入图片描述

  • Connected Services:是Visual Studio提供的一种工具,用于向MVC项目中添加外部服务或API的引用和配置。 Connected Services能够快速生成代码,以便您可以轻松地使用外部服务和API提供的数据和功能。它可以使您的开发体验更加高效,并提高代码的可重复性和可维护性。

  • App_Start:该文件夹包含用于应用程序启动时执行的代码。例如,RouteConfig.cs文件包含路由配置信息,FilterConfig.cs文件包含用于过滤请求的筛选器。

  • App_Data:该文件夹包含应用程序使用的所有数据文件或数据库。

  • Content:该文件夹包含应用程序使用的所有CSS和图像等静态资源文件。

  • Controllers(控制器):用于存放MVC框架中的控制器文件,控制器是一个负责处理用户请求、调用模型和视图的类。;该文件夹包含应用程序的所有控制器。控制器处理网站的请求并返回相应的响应。控制器是将模型(Model)和视图(View)结合在一起的核心部分,控制器获取模型中的数据并将其传递给视图进行展示。

  • Models(模型):该文件夹包含应用程序中的所有模型(Model)。Model是应用程序中的数据和相关操作的部分。它通常包含描述和维护数据的类。在MVC中,Model用于处理和存储应用程序数据,Model不关心如何显示数据或处理用户输入。

  • Views(视图):该文件夹包含应用程序的所有视图(View)。视图显示与用户交互的web页面,它们通常是HTML,CSS和JavaScript的代码块。在MVC中,视图没有任何代码逻辑,只负责展示数据,所有的逻辑处理都应该在控制器和模型中完成。

  • Scripts 该文件夹包含应用程序使用的所有JavaScript文件和库。

2、添加模型

  • 在“Models”文件夹中添加一个“Student”类。代码如下:
using System.ComponentModel.DataAnnotations;
namespace CSharpDemo.Models
{
    public class Student
    {
        public int Id { get; set; }

        [Required(ErrorMessage = "Please Enter Name")]
        public string Name { get; set; }
        /*这段代码是C#语言中的一个属性定义,使用了一个特性(attribute)Required,
        表示当前这个属性是必填的,如果属性值为空,则会抛出一个ErrorMessage中指定的异常信息。
        具体来说,这段代码定义了一个名为Name的字符串属性,使用了Required特性,
        要求必须输入名字,否则会抛出一个错误信息“Please Enter Name”。*/

        [Required]
        public string Email { get; set; }

        public string Phone { get; set; }
    }
}
  • 在这个模型中,我们定义了一个包含“Id”、“Name”、“Email”和“Phone”属性的“Student”类。

3、添加控制器

  • 在“Controllers”文件夹中添加一个控制器。在这个控制器中,我们将使用一个“List”集合来存储学生信息。代码如下:
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;

namespace CSharpDemo.Models
{
    /*这是一个基于ASP.NET MVC框架的学生控制器代码,它是一个继承自Controller基类的自定义控制器类。
     * 在这个控制器类中,可以定义一系列用于处理学生信息的动作(Action),
     * 比如添加学生、更新学生等,用于响应前端页面的请求和处理业务逻辑.
     */
    public class StudentController : Controller
    {
        private static List<Student> students = new List<Student>()
        {
            new Student() { Id = 1, Name = "Tom", Email = "tom@abc.com", Phone = "1234567890" },
            new Student() { Id = 2, Name = "Jerry", Email = "jerry@abc.com", Phone = "0987654321" }
        };

        public IActionResult Index()
        {
            return View(students);
        }
        /*
         * 这是一个 ASP.NET Core MVC 的 Index Action 方法,
         * 用于处理 HTTP GET 请求并返回一个 View(视图),以展示系统中的学生列表。
         * 其中参数 students 可能是由某种数据服务或存储返回的学生列表。
         * View 可以是一个 Razor 视图模板,用于渲染 HTML 页面的数据。
         */
    }
}
  • 在这个控制器中,我们首先定义了一个包含两个学生的“List”集合。
  • 然后,我们添加了一个名为“Index”的操作方法,该方法将“students”集合传递给一个视图。

4、添加视图

  • 现在我们需要为“Index”操作方法添加一个视图。在“Views”文件夹中,创建一个名为“Student”的文件夹,然后在该文件夹中创建一个名为“Index.cshtml”视图文件。代码如下:
@model List<CSharpDemo.Models.Student>
@*这段代码意思是在给index视图模板传递一个名为“Student”的列表模型,
该模型是由CSharpDemo.Models.Student类定义的。在视图中使用该模型,
可以绑定到该模型中的属性、方法等,并进行各种操作。

@model指令用于定义视图接收的数据类型。
@model定义了视图将会接收一个类型为List<CSharpDemo.Models.Student>的数据模型。*@

<table border="1">
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Email</th>
            <th>Phone</th>
        </tr>
    </thead>
    <tbody>
        @*使用了C#语言的Razor语法。遍历名为Model的泛型集合,*@
        @foreach (var student in Model)
        {
            <tr>
                <td>@student.Id</td>
                <td>@student.Name</td>
                <td>@student.Email</td>
                <td>@student.Phone</td>
            </tr>
        }
    </tbody>
</table>
  • 这个视图将显示“students”集合中的学生信息。

5. 运行应用程序

  • 现在我们可以运行应用程序,打开浏览器并访问 URL:localhost:端口号/Student。
  • 此时,应用程序将显示一个包含两个学生信息的表格。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/604092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算机网络-网络层1.2

IPv6 IP地址耗尽&#xff0c;CIDR和NAT只是延长了IPv4地址分配结束的时间 IPv6从根本上解决了IP地址的耗尽问题 与IPv4的比较 扩大了地址空间移除校验和字段&#xff0c;减少了每跳的处理时间将IPv4的可选字段移出首部&#xff0c;变成拓展首部&#xff0c;路由器不对拓展首…

NIO vs BIO模型解读

目录 stream vs channel IO模型 零拷贝 传统IO NIO优化 stream vs channel stream 不会自动缓冲数据&#xff0c;channel 会利用系统提供的发送缓冲区、接收缓冲区&#xff08;更为底层&#xff09;stream 仅支持阻塞 API&#xff0c;channel 同时支持阻塞、非阻塞 API&a…

计算机网络-网络层1.1

IPv4 网络层打包传输数据时&#xff0c;数据量小则称IP数据报&#xff0c;数据量大则分片&#xff0c;每一片称为IPv4分组 分组格式 固定部分长20B&#xff0c;可变部分用于提供错误检测和安全等机制 版本&#xff1a;指IP版本首部长度&#xff1a;以4B为单位&#xff0c…

Java --- springboot3之web的自动配置原理

目录 一、自动配置 二、默认效果 三、WebMvcAutoConfiguration原理 3.1、生效条件 3.2、效果 3.3、WebMvcConfigurer接口 一、自动配置 1、导入web的pom依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-s…

计算机网络-层级架构

计网概念 计算机网络将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由软件实现资源共享和信息传递&#xff0c;同时也是一些互联的、自治的计算机系统的集合 计网组成的三种划分方式 硬件、软件、协议 硬件包含主机&#xff08;端系…

Redis底层学习(四)—存储类型-Hash篇

文章目录 特点具体服务器操作命令底层结构应用场景 特点 1.适⽤场景&#xff1a;存储⽆序字典的数据&#xff0c;⽐如&#xff1a;适合存储对象类型、存储猪⾁价格等。 2.它的内部采⽤ 数组 链表 的结构&#xff0c;类似java⾥的HashMap。 hash的key值只能是字符串。将对象存…

从C语言到C++_15(vector的模拟实现)+迭代器失效问题

目录 1. vector的基本框架 1.1 构造析构和容量 1.2 push_back&#xff0c;reserve和operator[ ] 2. vector的迭代器 2.1 四个基本迭代器 2.2 迭代器区间初始化 2.3 迭代器的分类 3. vector的其它接口函数 3.1 修改后的reserve 3.2 resize 3.3 pop_back 4. insert和…

【Android】Jadx动态调试应用

【Android】Jadx动态调试应用 1. 前言 Jadx已支持动态调试APP&#xff0c;但一直没试过&#xff0c;从逆向角度尝试走一遍流程并熟悉&#xff0c;方便日后翻阅。 2. 相关知识 2.1 动态调试原理 动态调试的原理可以概括为以下几个步骤&#xff1a; 启动应用程序进程&#x…

[数据挖掘02] pandas的分配和聚合函数(1)

一 说明 窗口函数是什么&#xff1f;窗口函数是时间序列的局部属性处理函数&#xff0c;比如&#xff0c;一维卷积滤波、移动平均、指数平均本篇我们将针对pandas对象的窗口函数展开讨论&#xff0c;并以示例展示他们的概念实质。 二 窗口函数、分组函数&#xff08; GroupBy …

2023年18个最佳的ChatGPT AI插件

​关注文章下方公众号&#xff0c;可免费获取AIGC最新学习资料 导读&#xff1a;ChatGPT已经将人工智能提升到了一个新的高度。ChatGPT 4不仅是聊天机器人&#xff0c;还可以很好地与第三方插件配合使用。我们挑选出了2023年目前18款最佳的插件来介绍给您。 本文字数&#xff…

【运维知识进阶篇】Ansible Jinja2模板详解

哈喽大家好&#xff0c;我是koten&#xff0c;本篇文章给大家介绍jinja2模板&#xff0c;这是python的全功能模板引擎。在Ansible中&#xff0c;通常会使用jinja2模板来修改被管理主机的配置文件&#xff08;saltstack中也会用到&#xff09; Ansible中使用的jinja2模板其实就…

【软件测试】软件测试管理

软件测试管理 软件测试环境测试环境的要素测试环境管理员 软件测试计划⭐测试计划目标测试计划主题测试计划制订过程定义工作进度的过程测试策略 软件缺陷(bug)管理缺陷的主要属性如何报告缺陷⭐如何跟踪缺陷缺陷度量 软件配置管理&#xff08;SCM&#xff09;软件配置管理的基…

计算机网络传输层1.0

功能 传输层提供进程到进程的逻辑通信 复用和分用 传输层对收到的报文进行差错检测 TCP/UDP 提供进程到进程的逻辑通信 网络层是提供主机间逻辑通信 从网络层来看&#xff0c;通信双方为两台主机&#xff0c;IP数据包首部给出两台主机的IP地址 而实际上的两台主机通信时两台…

Makefile路径处理:执行路径、绝对路径与相对路径的处理

问题描述 最近编写了一个 编译设备树 的 Makefile&#xff0c;遇到了使用 make -f xx/Makefile&#xff0c;执行路径变了&#xff0c;造成 Makefile 里面的一些操作路径不正确&#xff0c;无法执行 获取当前目录 make 内置的 $(CURDIR)&#xff0c;可以把当前路径的全路径打印…

Three.js--》实现图片转3D效果展示

目录 项目搭建 初始化three.js基础代码 加载图片纹理 设置着色器 今天简单实现一个three.js的小Demo&#xff0c;加强自己对three知识的掌握与学习&#xff0c;只有在项目中才能灵活将所学知识运用起来&#xff0c;话不多说直接开始。 项目搭建 本案例还是借助框架书写th…

逻辑推理与集合

逻辑推理与集合是同一个过程的不同展示方式&#xff0c;这两者具有不同的特点。 逻辑推理通常是一种思维过程、语言文本的形式。 而集合则很容易采用一种可视化的方式进行展示&#xff0c;并且集合很容易进行交集、并集、补集、差集等计算。 把语言的逻辑推理过程转换为集合…

0602-指针和数组

数组名 数组名是一个地址常量&#xff0c;不允许赋值。它表示数组首元素的地址。 指针操作数组元素 指针访问数组 指针类型变量\常量1等同于指针保存的内存地址sizeof(指针指向的数据类型)。 2个相同类型的指针相减&#xff0c;得到的结果是2个指针的偏移量。其中偏移单位…

STL模型转有限元网格

随着计算机图形学、硬件和3D打印技术的发展&#xff0c;基于曲面三角网格的图形渲染及其文件格式越来越流行。 在有限元分析&#xff08;FEA&#xff09;中&#xff0c;工程师有时会得到基于三角形网格的几何文件&#xff08;如STL文件等&#xff09;并进行后续分析。 由于曲面…

华为OD机试真题 Java 实现【检查是否存在满足条件的数字组合】【2022Q4 100分】

一、题目描述 给定一个正整数数组&#xff0c;检查数组中是否存在满足规则的数字组合 规则&#xff1a;A B 2C 二、输入描述 第一行输出数组的元素个数。 接下来一行输出所有数组元素&#xff0c;用空格隔开。 三、输出描述 如果存在满足要求的数&#xff0c;在同一行…

【MySQL】不允许你不会SQL语句之DDL

目录 前言&#xff1a; 一.DDL数据库语句 1.1语句讲解 1.2总结 二.DDL表语句 2.1语句讲解 2.2总结 三.DDL字段语句 3.1语句讲解 3.2总结 四.MySQL数据类型 五.结尾 前言&#xff1a; 在从零到一入门MySQL一篇中&#xff0c;我们对数据库已经有了一定的了解&#xf…