ASP.NET Core MVC中的视图(Views)

接下来我将详细讲解ASP.NET Core MVC中的视图(Views)。

视图是什么?

视图是MVC中的一部分,它是网页用户界面的一部分,也就是网页的HTML代码。在MVC框架中,控制器(Controller)返回模型数据给视图(View),视图负责展示这些数据。视图文件通常采用Razor语法,可以添加HTML代码和模型数据内容,最终被浏览器渲染成网页。

如何创建视图?

在ASP.NET Core MVC中,我们可以使用Visual Studio或者其他类似的IDE自动生成视图文件。创建视图有以下几步:

  1. 打开控制器文件,找到需要添加视图的动作(Action),右键点击动作方法名,选择“添加视图”(Add View)。

  2. 在“添加视图”窗口中,可以设置视图模板(View Template)、视图名称(View Name)、视图引擎(View Engine)等,可以根据需要设置相关属性。

  3. 选择所需的设置后,点击“添加”按钮,即可在Views文件夹下生成对应的视图文件。

视图文件结构及其常见用法?

视图文件由HTML代码和Razor语法组成,Razor语法由@字符表示,可以嵌入C#代码来访问模型数据。以下是一个简单的视图文件示例。

@model IEnumerable<Person>

<h2>Person List</h2>

<ul>
    @foreach (var person in Model)
    {
        <li>@person.Name</li>
    }
</ul>

在这个视图文件中,@model关键字表示这个视图接收的模型数据类型,Model则表示模型数据本身。@foreach语句可以遍历模型数据,渲染出一份人名列表。我们可以在控制器中创建模型数据,然后传递给视图文件进行渲染。以下是一个控制器中传递模型数据给视图的代码示例。

public class PersonController : Controller
{
    public IActionResult Index()
    {
        var persons = new List<Person>
        {
            new Person { Name = "Tom" },
            new Person { Name = "Jerry" },
            new Person { Name = "Bob" },
        };

        return View(persons);
    }
}

在这个控制器中,我们创建了一个包含三个Person对象的列表,然后调用View方法将这个列表传递给视图文件。在视图文件中,我们使用了@model关键字来声明接受的模型数据类型。

除了渲染模型数据,视图还可以包含表单、超链接、JavaScript、CSS等内容,在HTML中添加相应的标签即可。

视图布局及共享?

视图布局是指将重复的HTML代码抽象出来,放在单独的文件中,达到共享的效果。在ASP.NET Core MVC中,可以使用布局来避免重复代码,提高程序的可维护性。以下是一个布局文件的示例。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewData["Title"] - My ASP.NET Core Application</title>
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
    <header>
        <nav>
            <ul>
                <li><a asp-area="" asp-controller="Home" asp-action="Index">Home</a></li>
                <li><a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a></li>
            </ul>
        </nav>
    </header>
    <div class="container">
        @RenderBody()
    </div>

    <footer>
        <p>&copy; 2020 - My ASP.NET Core Application</p>
    </footer>

    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
    </environment>
    <environment exclude="Development">
        <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
                integrity="sha384-J6qa4849blE2+poT8rRBg5pZssOWLKTE/6+aZs2X/i9TCpYGKS3X2y2QvHBVYZGf"
                crossorigin="anonymous"></script>
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"
                integrity="sha384-UO2eT0CpDhq61zGzyn3FK4QpXwD3w3p6G0vPD7X2fYkGhRqnazwYg8KksFdj+nj"
                crossorigin="anonymous"></script>
    </environment>
</body>
</html>

在这个布局文件中,我们将公共的HTML元素(如头部、导航、页脚等)放在一起,然后用@RenderBody()命令表示渲染页面的内容部分。当一个View文件被渲染时,将自动插入到布局页面中所定义的位置,并生成HTML页面。我们在需要使用布局的视图文件中使用@layout关键字指定要使用的布局文件,如下所示。

@{
    ViewData["Title"] = "Home Page";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>@ViewData["Title"]</h1>
<p>Welcome to my first ASP.NET Core MVC webpage!</p>

<hr />

<h3>Some Featured Articles</h3>
<ul>
    <li><a href="#">A Beginner's Guide to the ASP.NET Core framework.</a></li>
    <li><a href="#">A Comprehensive Tutorial on How to Build a Blog Site From Scratch Using ASP.NET Core.</a></li>
    <li><a href="#">Using ASP.NET Core to Build a Web API with CRUD Operations.</a></li>
</ul>

在这个视图文件中,我们使用了@layout关键字指定了使用的布局文件,此外还使用了@ViewData关键字来定义视图的标题。这样,当这个视图文件被渲染时,将自动嵌入到布局文件中,最终生成完整的HTML页面。

示例说明

以下分别是一个带有表单的视图文件示例和一个使用了布局文件的视图文件示例。

带有表单的视图文件

以下是一个简单的视图文件示例,其中包含一个表单。

@model ContactViewModel

<h2>Contact Us</h2>

<form method="post" enctype="multipart/form-data">
    <div class="form-group">
        <label asp-for="Name"></label>
        <input asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Email"></label>
        <input asp-for="Email" class="form-control" />
        <span asp-validation-for="Email" class="text-danger"></span>
    </div>
    <div class="form-group">
        <label asp-for="Subject"></label>
        <input asp-for="Subject" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Message"></label>
        <textarea asp-for="Message" class="form-control"></textarea>
    </div>
    <div class="form-group">
        <label asp-for="Attachments"></label>
        <input asp-for="Attachments" type="file" multiple class="form-control-file" />
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</form>

在这个视图文件中,我们使用了ContactViewModel作为模型数据类型,@model语句声明使用的模型数据类型。表单中包含多个表单元素,如文本框(input)、文本域(textarea)、文件上传(input[type="file"])等。在控制器中处理提交表单的请求,并参照模型数据类型获取表单信息,最终返回到视图文件中完成渲染。

使用布局文件的视图文件

以下是一个简单的视图文件示例,其中使用了一个布局文件。

@{
    ViewData["Title"] = "Home Page";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h1>@ViewData["Title"]</h1>
<p>Welcome to my first ASP.NET Core MVC webpage!</p>

<hr />

<h3>Some Featured Articles</h3>
<ul>
    <li><a href="#">A Beginner's Guide to the ASP.NET Core framework.</a></li>
    <li><a href="#">A Comprehensive Tutorial on How to Build a Blog Site From Scratch Using ASP.NET Core.</a></li>
    <li><a href="#">Using ASP.NET Core to Build a Web API with CRUD Operations.</a></li>
</ul>

在这个视图文件中,我们使用了@layout关键字指定了使用的布局文件(_Layout.cshtml),此外还使用了@ViewData关键字来定义视图的标题。这样,当这个视图文件被渲染时,将自动嵌入到布局文件中,最终生成完整的HTML页面。

以上就是关于ASP.NET Core MVC中的视图的完整攻略,希望对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET Core MVC中的视图(Views) - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • c# 区分几种定时器(timer)

    下面我来详细讲解一下 “C# 区分几种定时器(Timer)” 的攻略。 什么是定时器(Timer)? 在编程中,我们经常需要在特定的时间间隔或者在特定的时间点上执行某些指定的操作,这时就需要使用到定时器(Timer)了。定时器就是用来触发一段代码在一定时间间隔或者某个时间点上自动执行的工具。 在 C# 中,常用的定时器类型有 System.Windows.F…

    C# 2023年6月1日
    00
  • C#编程实现QQ界面的方法

    C#编程实现QQ界面的方法 前言 QQ是中国最流行的即时通讯软件之一,它的界面十分经典,因此,很多初学编程的人都想尝试使用C#编写一个类似QQ的界面。本文将介绍如何使用C#编写QQ界面的方法,并提供两个示例说明。 第一步:界面设计 在C#中,我们可以使用Visual Studio中的Windows Form进行界面的设计。因此,第一步就是打开Visual S…

    C# 2023年5月31日
    00
  • C#精髓 GridView72大绝技 学习gridview的朋友必看

    C#精髓GridView72大绝技学习攻略 什么是GridView? GridView是ASP.NET Web应用程序开发中的常见控件之一,它可以在Web页面上呈现出类似于表格的数据。GridView可以用于展示各种数据,例如:数据列表、报表等。 学习GridView的准备工作 学习GridView需要具备以下技能: C#基础语法 ASP.NET Web开发…

    C# 2023年5月15日
    00
  • CommunityToolkit.Mvvm8.1 viewmodel源生成器写法(3)

      本系列文章导航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知识对您有所提示,同时欢迎交流和指正 作者:aierong出处:https://www.cnblogs.com/aierong   说明 Co…

    C# 2023年4月18日
    00
  • C#多线程系列之任务基础(一)

    我会为你详细介绍“C#多线程系列之任务基础(一)”的完整攻略。 什么是多线程? 多线程是一种并发编程的思想,可以在 CPU 繁忙的时候,运行不同的线程,从而达到提高 CPU 使用率的目的。对于 I/O bound 任务(如等待用户输入、读写文件等),多线程同样可以提高任务的效率,因为不同的线程可以异步运行,而不需要等待其它 I/O 操作。 任务是什么? 在 …

    C# 2023年5月15日
    00
  • 解决Unity无限滚动复用列表的问题

    当使用 Unity 开发游戏时,经常需要在游戏中使用列表来显示大量信息。而为了优化性能,我们通常会使用无限滚动复用列表。但是,在实现无限滚动复用列表时,可能会遇到以下这些问题: 在滚动列表时,出现卡顿情况。 在滚动列表时,列表中的元素出现重复或错位现象。 在滚动到列表底部时,无法加载新的元素。 这些问题的出现是由于滚动列表的过程中,我们会涉及到对象池、缓存、…

    C# 2023年6月3日
    00
  • wxPython实现文本框基础组件

    下面我会详细讲解“wxPython实现文本框基础组件”的完整攻略。 标题 1. 前言 wxPython 是基于 Python 语言的一种 GUI 工具包。使用 wxPython 可以方便地进行图形用户界面的开发。本文介绍了如何使用 wxPython 实现文本框基础组件。在本示例中,使用 Python 3.x 和 wxPython 4.x 版本进行演示。 2.…

    C# 2023年5月31日
    00
  • C#中重载相等(==)运算符示例

    C#中的相等运算符(==)可以进行重载,使得不同类型的对象也可以进行相等判断。在此提供一份重载相等运算符的示例攻略,帮助大家更好地理解。 1. 什么是重载相等运算符? 在C#中,我们可以使用相等运算符(==)或不等运算符(!=)来判断两个对象是否相等。默认情况下,这些运算符只对基元类型(如int,double,bool等)进行比较。但是,我们经常需要比较两个…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部