在ASP.NET Core MVC应用程序中,没有什么比页面更重要的了,当您在URL中指定路径时,它也不包含与页面直接对应的任何内容。与ASP.NET Core MVC应用程序中的页面最接近的内容称为视图(View)。
您知道,在ASP.NET MVC应用程序中,所有传入的浏览器请求均由控制器处理,并且这些请求都映射到控制器操作。
控制器方法可能会返回视图,也可能执行其他某种类型,例如重定向到另一个控制器方法。
使用MVC框架,最流行的HTML创建方法是使用ASP.NET MVC的Razor视图引擎。
要使用此视图引擎,控制器方法将生成一个 ViewResult 对象,并且ViewResult可以带有要使用的Razor视图的名称。
视图将是文件系统上的文件,并且ViewResult还可以将模型对象携带到视图中,并且视图在创建HTML时可以使用该模型对象。
当MVC框架看到您的控制器方法产生ViewResult时,该框架将在文件系统上找到该视图,执行该视图,从而产生HTML。
现在举一个简单的例子,通过更改HomeController Index方法的实现来理解它如何在应用程序中工作,如以下程序所示。
using FirstAppDemo.Models; using Microsoft.AspNet.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace FirstAppdemo.Controllers { public class HomeController : Controller { public ViewResult Index() { var employee = new Employee { ID = 1, Name = "Mark Upston"}; return View(); } } }
在 HomeController 内部,而不是生成 ObjectResult ,只返回 View()方法返回的内容, View方法不返回ObjectResult,它会创建一个新的ViewResult,因此还将Index方法的返回类型更改为ViewResult, View方法在此处确实接受一些参数,将在不使用任何其他参数的情况下调用此方法。保存您的文件并刷新您的浏览器。
这是因为现在没有视图。
在C#ASP.NET项目中,默认情况下,视图是具有* .cshtml扩展名的文件,并且这些视图遵循特定的约定,位于项目的"Views"文件夹中。
如果需要通过HomeController的Index操作呈现视图,则MVC框架要查找该视图的第一个地方是Views文件夹内。
它将进入Home文件夹,然后查找名为Index.cshtml的文件,该文件名以Index开头,因为处于Index方法中。
MVC框架还将在Shared文件夹中查找并放置在Shared文件夹中的视图,您可以在应用程序中的任何位置使用它们。
为了使view输出正常工作,在正确的位置创建此Index.cshtml文件,因此,在项目中,首先需要添加一个包含所有视图的文件夹,并将其命名为Views,在Views文件夹内,将为与HomeController关联的视图添加另一个文件夹,并将该文件夹称为Home,右键单击主文件夹,然后选择Add→New Item。
在左窗格中,选择" MVC视图页",然后在名称字段中输入 index.cshtml ,然后单击"Add"按钮。
在index.cshtml文件中添加以下代码。
链接:https://www.learnfk.comhttps://www.learnfk.com/asp.net_core/asp.net-core-views.html
来源:LearnFk无涯教程网
<html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title>Home</title> </head> <body> <h1>Welcome!</h1> <div> This message is from the View... </div> </body> </html>
现在,您可以看到一个 *.cshtml文件,它可以包含HTML标签,并且在此文件中拥有的任何标签都将直接发送到客户端,保存此文件并刷新浏览器。
现在,Home控制器通过ViewResult将这个视图呈现给客户端以及该index.cshtml文件中的所有标签,即发送给客户端的所有标签。
回到HomeController和View方法,此View方法有几个不同的重载,并将employee模型作为参数传递。
using FirstAppDemo.Models; using Microsoft.AspNet.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace FirstAppdemo.Controllers { public class HomeController : Controller { public ViewResult Index() { var employee = new Employee { ID = 1, Name = "Mark Upston"}; return View(employee); } } }
仅使用模型对象的View方法将使用默认视图,即Index,在这里,只想传递该模型信息,并在Index.cshtml中使用该模型,如以下程序所示。
<html xmlns = "http://www.w3.org/1999/xhtml"> <head> <title>Home</title> </head> <body> <h1>Welcome!</h1> <div> @Model.Name </div> </body> </html>
在 Razor视图中使用@符号时,Razor视图引擎将把您键入的任何内容都视为C#表达式。
现在让无涯教程保存所有文件,此后,刷新浏览器以查看以下输出。
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)