MVC视图的基础知识

开发人员之所以花费大量时间来重点设计控制器和模型对象,是因为在这些领域中,精

心编写的整洁代码是开发一个可维护Wb应用程序的基础。

但是当用户在浏览器中访问Wb应用程序时,这些工作他们是看不到的。用户对应用程

序的第一印象,以及与应用程序的整个交互过程都是从视图开始的。视图实际上就是应用程序的“大使”。显而易见,如果应用程序的其他部分存在错误,那么设计再好,再没有瑕疵的视图也不能弥补这方面的不足。

同样,如果创建一个丑陋且难以利用的视图,那么许多用户将不会给应用程序提供证明它的功能多么强大、运行多么顺畅的机会。

分析了控制器如何返回输出到浏览器的字符串。这对于控制器的入门非常有帮助,但在一些重大的Wb应用程序中,我们会很快注意到一个模式:大部分的控制器操作需要以HTML格式动态显示信息。如果控制器操作仅仅返回字符串,那么就需要有大量的字符串替换操作,这样就会变得混乱不堪。因此,模板系统的需求越来越清晰,此时,视图应运而生。

视图的职责是向用户提供用户界面。当控制器针对被请求的URL执行完合适的逻辑后,就将要显示的内容委托给视图。

不像基于文件的Web框架,比如ASP.NET Web Forms和PHP,视图本身不会被直接访问,浏览器不能直接指向一个视图并渲染它。

相反,视图总是被控制器渲染,因为控制器为它提供了要渲染的数据。在一些简单的情况中,视图不需要或需要很少控制器提供的信息。

更常见的情况则是控制器需要向视图提供一些信息,所以它会传递一个数据转移对象,叫做模型。视图将这个模型转换为一种适合显示给用户的格式。

在ASP.NET MVC中,完成这一过程由两部分操作,其中一个是检查由控制器提交的模型对象,另一个是将其内容转换为HTML格式。

当然并非所有视图都渲染HTML格式。在创建Wb应用程序的过程中,HTML是最常用的格式。但是视图也可以渲染其他类型的内容

理解视图原理最简单的方法 是查看在一个新ASP.NET MVC应用程序中创建的样本视图。首先看一个最简单的例子:不需 要控制器提供任何信息的视图。

下面示例 ,还有一个扩展,喜欢的可以去VS插件搜索使用

除了顶部设置页面标题的少量代码,这就是标准的HTML。浏览到网站的根目录,结果毫不奇怪:HomeController的ndex方法渲染了 Home Index:视图,也就是将前一个视图的HTML内容封装到由站点布局提供的页面Header和Footer部分得到的结果。

这个图片十分基础一在最简单的情况中,向控制器发出一个请求,控制器返回一个视图,其实就是一些静态的HTML。很容易,但是动态性不好。前面说过,视图提供了一个模板引擎。下面我们就利用这个模板引擎,从控制器向视图传递少量数据。最简单的方法就是使用ViewBag。.ViewBag.具有局限性,但是如果只是向视图传递少量数据,它还是很有用的。

这和上面的方法几乎相同,但是注意控制器将ViewBag.Message属性值设置成一个字符串,然后再调用return View现在看看对应的视图

这个视图很简单,它将页面标题设置为ViewBag.Title,然后在标题标签中显示ViewBag. Title和ViewBag.Message。两个ViewBagt值前面的@字符是本章后面将会学习的Razor语法中最 重要的部分:它告诉Razor视图引擎,接下来的字符是代码,不是HTML文本。

上面通过一些例子演示了如何使用视图来渲染HTML。还有ASP.NET MVC如何找到正确的视图进行渲染,以及如何重写这个视图,为一个控制器操作指定特定的视图。

现在为止介绍的控制器操作简单地调用returnView0来渲染视图,还不需要指定视图的文件名。可以这么做,是因为它们利用了ASP.NET MVC框架的一些隐式约定,这些约定定义了视图选择逻辑。

当创建新的项目模板时,将会注意到,项目以一种非常具体的方式包含了一个结构化的Viws目录。在每一个控制器的View文件夹中,每一个操作方法都有一个同名的视图文件与其相对应。这就提供了视图与操作方法关联的基础。视图选择逻辑在/Views/BOLS目录(这里就是去掉Controller后缀的控制器名)下查找与操作方法同名的视图。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值