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

yizhihongxing

接下来我将详细讲解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日

相关文章

  • linq中的串联操作符

    当我们需要将多个序列串联在一起时,可以使用 LINQ 串联操作符。串联操作符包括 Concat 和 Union 。 Concat 操作符 Concat 操作符用于将两个序列按照顺序连接在一起,生成一个新序列。新序列包含原始序列中所有元素,包括重复元素。 Concat 操作符的语法如下: var result = sequence1.Concat(sequen…

    C# 2023年6月8日
    00
  • c#使用xamarin编写拨打电话程序

    很好,下面我来详细讲解一下“c#使用xamarin编写拨打电话程序”的完整攻略。 1. 环境搭建 首先,在开始编写程序前,需要先搭建好环境。我们可以在Visual Studio中使用Xamarin进行开发。在安装 Visual Studio 时选择安装移动开发选项以及Xamarin的组件,或者在已安装的Visual Studio中通过安装工具添加Xamari…

    C# 2023年6月3日
    00
  • c#汉诺塔的递归算法与解析

    C#汉诺塔的递归算法与解析 汉诺塔作为经典的递归问题,在计算机科学中拥有非常重要的地位。本文将介绍如何用 C# 编写汉诺塔的递归算法,以及递归算法的解析。 汉诺塔问题 汉诺塔问题是一个源自印度传说中的故事。故事讲述了三个塔座,A、B、C,之间的汉诺塔问题。在塔座A上放有n个从小到大编号的圆盘,最大的在最下面,最小的在最上面。目标是将塔座A上的圆盘全部移到塔座…

    C# 2023年6月1日
    00
  • c#基于Redis实现轻量级消息组件的步骤

    C#是一种面向对象的编程语言,Redis是一个基于内存,可持续化的Key-Value存储系统。结合两者可以实现一个轻量级的消息组件,下面是实现步骤: 1. 安装Redis 可以从官网下载Redis并安装,或者通过命令行sudo apt-get install redis-server安装。 2. 安装StackExchange.Redis 在Visual S…

    C# 2023年5月31日
    00
  • Winform界面中实现菜单列表的动态个性化配置管理方法

    Winform界面中实现菜单列表的动态个性化配置管理方法,可以通过以下步骤来实现: 1. 数据存储 首先,需要将菜单列表的配置信息存储在数据源中,例如使用XML或JSON格式。在这个数据源中,每个菜单项都有自己的属性包括菜单名称、菜单ID、菜单所处的层级以及是否可见等。 例如,可以使用以下XML格式的数据源来存储菜单列表的信息: <MenuItems&…

    C# 2023年6月7日
    00
  • SQL Server中实现二进制与字符类型之间的数据转换

    SQL Server 中实现二进制与字符类型之间的数据转换主要涉及到以下两种类型的转换: 将二进制数据转换为字符类型数据 在 SQL Server 中,可以使用 CAST 和 CONVERT 函数将二进制数据转换成字符类型数据。 示例1:将二进制数据转换为十六进制字符类型数据 DECLARE @binaryData VARBINARY(10) = 0x546…

    C# 2023年5月31日
    00
  • .Net中的集合排序可以这么玩你知道吗

    当我们需要对一组数据进行排序时,集合排序是我们常用的手段之一。在 .Net 中,集合排序可以通过使用 Linq 的 OrderBy 和 OrderByDescending 方法来实现。 1. 升序排序 首先,我们需要定义一个包含一组数据的 List: List<int> numbers = new List<int> { 5, 3, …

    C# 2023年6月1日
    00
  • asp.net点击 查看更多 实现无刷新加载的实现代码

    下面是详细讲解“ASP.NET点击查看更多实现无刷新加载的实现代码”的攻略: 一、实现原理 在ASP.NET中,我们可以使用Ajax实现无刷新加载。Ajax的原理是通过JavaScript中的XMLHttpRequest对象向服务器发送异步请求,然后通过DOM操作把返回的数据实时更新到网页中。实现的步骤大概如下: 创建XMLHttpRequest对象。 向服…

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