开发手册 欢迎您!
软件开发者资料库

MVC框架 - 视图

MVC框架视图 - 从基本到高级概念的简单简单步骤学习Web设计中的MVC框架,其中包括简介,体系结构和流程,MVC和ASP.NET Web窗体,文件夹,模型,控制器,视图,布局,路由引擎等示例,过滤器和动作过滤器,第一个应用程序,高级MVC示例,Ajax支持,异常处理,捆绑和缩小。

如最初的介绍性章节所示,View是应用程序用户界面所涉及的组件.这些视图通常是从模型数据绑定并具有扩展名,如html,aspx,cshtml,vbhtml等.在我们的第一个MVC应用程序中,我们使用带控制器的视图向最终用户显示数据.为了将这些静态和动态内容呈现给浏览器,MVC Framework使用View Engines. View Engines基本上是标记语法实现,负责将最终HTML呈现给浏览器.

MVC Framework附带两个内置视图引擎 :

Razor Engine :  Razor是一种标记语法,可以将服务器端C#或VB代码转换为网页.此服务器端代码可用于在加载网页时创建动态内容.与ASPX引擎相比,Razor是一种先进的引擎,并且是在MVC的更高版本中推出的.

ASPX引擎 :  ASPX或Web窗体引擎是从一开始就包含在MVC框架中的默认视图引擎.使用此引擎编写代码类似于在ASP.NET Web窗体中编写代码.

以下是比较Razor和ASPX引擎的小代码片段.

Razor

@Html.ActionLink("Create New", "UserAdd")

ASPX

<% Html.ActionLink("SignUp", "SignUp") %>

Razor是一款先进的View Engine,它具有紧凑的语法,测试驱动的开发方法和更好的安全功能.我们将在所有示例中使用Razor引擎,因为它是最主要使用的View引擎.

这些视图引擎可以编码并实现以下两种类型 :

  • 强类型

  • 动态类型

这些方法分别类似于早期绑定和后期绑定,其中模型将强烈或动态地绑定到View.

强类型视图

要理解这个概念,让我们创建一个示例MVC应用程序(按照前面章节中的步骤)并添加一个名为 ViewDemoController 的Controller类文件.

新视图控制器

现在,在控制器文件中复制以下代码 :

using System.Collections.Generic; using System.Web.Mvc;  namespace ViewsInMVC.Controllers {       public class ViewDemoController : Controller {             public class Blog {          public string Name;          public string URL;       }              private readonly List topBlogs = new List {          new Blog { Name = "Joe Delage", URL = "http://IT屋/joe/"},          new Blog {Name = "Mark Dsouza", URL = "http://IT屋/mark"},          new Blog {Name = "Michael Shawn", URL = "http://IT屋/michael"}       };              public ActionResult StonglyTypedIndex() {          return View(topBlogs);       }              public ActionResult IndexNotStonglyTyped() {          return View(topBlogs);       }      } }

在上面的代码中,我们定义了两个操作方法: StronglyTypedIndex IndexNotStonglyTyped .我们现在将为这些操作方法添加视图.

右键单击StonglyTypedIndex操作方法,然后单击添加视图.在下一个窗口中,选中"创建强类型视图"复选框.这也将启用Model Class和Scaffold模板选项.从"脚手架模板"选项中选择"列表".单击添加.

添加视图强类型

一个类似于的视图文件将创建以下屏幕截图.您可以注意到,它在顶部包含了ViewDemoController的Blog模型类.您还可以使用此方法在代码中使用IntelliSense.

查看强类型智能感知

动态类型视图

要创建动态类型视图,请右键单击IndexNotStonglyTyped操作,然后单击添加视图.

添加视图

这次,请不要选中"创建强类型视图"复选框.

查看索引不强类型

生成的视图将包含以下代码 :

@model dynamic             @{    ViewBag.Title = "IndexNotStonglyTyped"; }

Index Not Stongly Typed

  

    

                 @foreach (var blog in Model) {          
  •              @blog.Name          
  •           }       
 

正如您在上面的代码中所看到的,这次它没有像前一种情况那样将Blog模型添加到View中.此外,这次你将无法使用IntelliSense,因为这次绑定将在运行时完成.

强类型视图被认为是一种更好的方法,因为我们已经知道了什么数据作为模型传递,而不像动态类型视图,其中数据在运行时绑定,如果链接模型中的某些内容发生更改,则可能导致运行时错误.