asp.net mvc中的视图生成实例分析_6

上传人:bin****86 文档编号:59370291 上传时间:2018-11-06 格式:DOCX 页数:7 大小:17.82KB
返回 下载 相关 举报
asp.net mvc中的视图生成实例分析_6_第1页
第1页 / 共7页
asp.net mvc中的视图生成实例分析_6_第2页
第2页 / 共7页
asp.net mvc中的视图生成实例分析_6_第3页
第3页 / 共7页
asp.net mvc中的视图生成实例分析_6_第4页
第4页 / 共7页
asp.net mvc中的视图生成实例分析_6_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《asp.net mvc中的视图生成实例分析_6》由会员分享,可在线阅读,更多相关《asp.net mvc中的视图生成实例分析_6(7页珍藏版)》请在金锄头文库上搜索。

1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 mvc中的视图生成实例分析本文实例分析了 mvc中的视图生成过程。分享给大家供大家参考。具体如下:在 mvc 中,我们将前端的呈现划分为三个独立的部分来实现,controller 用来控制用户的操作,view 用来控制呈现的内容,model 用来表示处理的数据。从控制器到视图通常,在 controller 中,我们定义多个 action ,每个 action 的返回类型一般是 actionresult,在 action 处理的最后,我们返回对于视图的调

2、用。复制代码 代码如下:public actionresult index()return this.view();默认情况下,将会调用与 action 同名的视图,比如,在上面的 action 中,将会使用名为 index 的视图。如果我们传递了一个字符串参数,那么,这个字符串就回被视为视图的名称,例如,我们希望使用名为 indexview 的视图进行呈现,那么,可以如下完成。复制代码 代码如下:public actionresult index()return this.view(indexview);布局与视图mvc 会直接去找我们的视图吗?不会!从 action 返回之后,首先,mvc

3、 会在 views 文件夹下查看是否存在一个名为 _viewstart.cshtml 的特殊文件,如果存在的话,就回执行这个文件。默认情况下,这个文件的内容如下所示:复制代码 代码如下:layout = /views/shared/_layout.cshtml;也就是说,它设置了我们的默认布局使用那一个文件文件。布局等价于我们在 webform 中所使用的母版页。如果没有这个文件,默认没有使用布局。如果有了这个文件,而我们在页面中不想使用这个布局怎么办呢?很简单,在页面中设置 layout = null 来覆盖掉它。复制代码 代码如下:layout = null;布局中的分区在布局页面中,默认

4、就回存在一个特殊的指令 renderbody(),这是说,你在内容页面中呈现的内容,将会在这里进行输出。这就是在使用布局之后,你会发现你的视图中已经没有了 标记的原因。复制代码 代码如下:renderbody()假如说,我们希望在布局中的多个位置进行输出,比如,样式表通常在 标记中,而现代的脚本则会出现在页面的最后,页面的内容当然出现在页面的主体中了。这样的话,我们在内容页面的实际内容,将会需要在布局的不同部分进行呈现,而不是在同一个位置进行呈现了。解决的办法就是分区,实际上,类似于 webform 中的 contentplaceholder ,定义一个命名的区域。比如,下面我们定义了一个名为

5、 scripts 的命名区域,第二个参数表示这个区域是可选的区域,在内容页面中可以不用提供内容。复制代码 代码如下:renderbody()rendersection(scripts, required: false)而在我们的内容视图中,默认所有的内容都是填充到布局页面中的 renderbody 部分。如果不是的话,就可以在内容页面中,通过 section 区域名称 的方式来定义准备输出到对应区域中的内容了。复制代码 代码如下:section scriptsvar i = 0;分部视图如果我们的页面比较复杂,在同一个视图中定义输出的内容会导致页面非常复杂,通过将页面划分为多个比较独立的组成部

6、分,可以将一个复杂的页面拆分为多个子部分来呈现。比如页面的标题部分,页面的菜单,页面的脚注部分等等。在 webform 中,解决这个问题的技术称为用户控件,在 mvc 中由两个技术来解决:分部视图和子action。先看分部视图,分部视图不依赖于 action ,只能嵌入到其他独立视图中使用,你可以直接在视图文件夹中创建分部视图。在使用分部视图的页面中,使用 renderpartial 方法调用分部视图。复制代码 代码如下:html.renderpartial(productsummary);分部视图与主视图共享所有的数据,比如模型,viewdata,viewbag 等等,这些数据可以直接在分部

7、视图中使用。如果希望分部视图使用不同的模型对象,简化分部视图中的数据复杂度,也可以直接传递一个模型对象过去。复制代码 代码如下:html.renderpartial(productsummary, p);这里的第二个参数,将会在分部视图中当在模型对象来使用。需要注意的是 renderpartial 方法的返回类型是 void,它会将输出的内容直接输出到回应的输出流中。所以在使用上面语句的时候,不能直接嵌入到页面中,需要放在一个 语句中,如下所示。复制代码 代码如下:html.renderpartial(productsummary, p);如果你不喜欢这样的语法,而希望直接嵌入到页面中,也可以

8、使用 html.partial 方法来呈现,区别是这个方法返回呈现的 html 片段,而不是直接输出到输出流中。复制代码 代码如下:html.partial(productsummary, p)子 action 问题由于分布视图没有处理能力,只能继承主页面的数据进行呈现,如果需要有处理能力,怎么办呢?在 webform 中,我们可以使用 server.execute 来嵌入其它处理程序的输出内容,在 mvc 中,我们使用子 action 来处理。子 action 就是用户不能直接访问,只能在其他的 action 中访问的 action 方法,它与普通的 action 一样,有 action 方

9、法,还有这个 action 对应的视图。我们使用特性 childactiononly 来说明这是一个子 action。复制代码 代码如下:childactiononlypublic string menu()return hello, from navcontroller;如果用户直接请求这个子 action ,那么,系统会返回一个错误信息。操作“menu”只能由子请求访问。在其它视图中,可以使用 renderaction 来访问子 action,类似于 renderpartial 方法,这个方法直接将内容输出到输出流中,由于它们的返回类型都是 void ,所以需要使用 来使用。复制代码 代码如下: html.renderaction(menu, nav); 同样,使用 action 则可以直接返回一个 html 片段,就不用使用一个 了。复制代码 代码如下:html.action(menu, nav)对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号