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#中用foreach语句遍历数组及将数组作为参数的用法

    下面是关于“C#中用foreach语句遍历数组及将数组作为参数的用法”的完整攻略: 遍历数组 在C#中,我们可以使用foreach语句来遍历数组。其基本语法如下: foreach (数据类型 变量名 in 数组名称) { // 循环体语句 } 其中,数据类型为数组中元素的类型,变量名为当前元素的变量名,数组名称为要遍历的数组的名称。 下面是一个示例,代码实现…

    C# 2023年6月7日
    00
  • .NET Core跨平台执行命令、脚本的方法详细

    .NET Core跨平台执行命令、脚本的方法详细 .NET Core 是一个跨平台的开源框架,可以在 Windows、Linux 和 macOS 等多个操作系统上运行。在 .NET Core 中,可以使用多种方式执行命令和脚本,本攻略将详细介绍这些方法。 使用 dotnet 命令 dotnet 命令是 .NET Core 的命令行工具,可以用于执行各种操作,…

    C# 2023年5月17日
    00
  • C# WinForm程序设计简单计算器

    C# WinForm程序设计简单计算器攻略 1. 界面设计 首先,在Visual Studio中创建一个WinForm项目。可以在窗体中设计出计算器的布局。 建议使用表格布局,将整个计算器分为数字区、运算符区和结果显示区三个部分。数字区和运算符区使用按钮实现,结果显示区采用一个只读的文本框实现。 2. 功能实现 2.1 数字和运算符按钮 将数字和运算符按钮放…

    C# 2023年6月6日
    00
  • 理解C#中的Lambda表达式

    理解C#中的Lambda表达式需要掌握以下几个方面: Lambda表达式的语法 Lambda表达式的使用场景和应用 Lambda表达式与委托的关系 Lambda表达式的方法推断和参数类型推断 接下来我会逐一讲解。 Lambda表达式的语法 Lambda表达式是一种匿名方法,它通常用于作为委托类型的参数或返回值,可以简化很多代码。Lambda表达式的语法如下:…

    C# 2023年6月6日
    00
  • jquery中ajax调用json数据的使用说明

    在Web开发中,使用Ajax调用JSON数据是一种常见的任务,它可以帮助开发者动态地加载和更新页面内容。在本攻略中,我们将介绍如何使用jQuery中Ajax调用JSON数据,并提供两个示例来说明其用法。 以下是两个示例,介绍如何使用jQuery中Ajax调用JSON数据: 示例一:使用$.ajax方法调用JSON数据 首先,我们需要引入jQuery库: &l…

    C# 2023年5月15日
    00
  • c#反射调用方法示例

    以下是“C#反射调用方法示例”的完整攻略。 什么是反射 在 C# 中,反射是指通过元数据来检查和访问程序集、类型、字段、方法和属性等成员的一种机制。通过反射,我们可以在运行时获取一个对象的类型并操作它;也可以动态地创建类型、调用成员等。C# 反射机制中最常用的类和接口是 System.Reflection 和 System.Type。 反射调用方法示例 下面…

    C# 2023年5月31日
    00
  • C#中Params的用法

    下面是关于C#中Params用法的完整攻略。 什么是Params Params是C#中的一种关键字,在方法参数中使用,表示该参数可以接受零个或多个值。Params参数必须是方法中的最后一个参数,而且必须是数组类型。 Params的语法 Params的语法形式如下: public void Method(params string[] values) { //…

    C# 2023年6月7日
    00
  • asp.net DataGrid 中文字符排序的实现代码

    ASP.NET DataGrid 是一个常用的数据展示控件,但是当涉及到中文字符排序时,DataGrid 默认是按照 ASCII 码顺序进行排序的,可能无法满足我们的需求。为了实现中文字符排序,我们可以使用自定义排序算法。 下面是实现中文字符排序的完整攻略: 第一步:继承 IComparer 接口 我们需要自定义一个排序类,并继承 IComparer 接口。…

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