加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

Asp.net mvc 知多少(七)

发布时间:2020-12-15 21:22:03 所属栏目:asp.Net 来源:网络整理
导读:本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.N

本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。由于个人技术水平和英文水平也是有限的,因此错误在所难免,希望大家多多留言指正。

系列导航

Q70. 什么是ASP.NET MVC 中的 Partial View(分布视图)? Ans. Partial view 类似于ASP.NET Web forms 中的user control(用户控件)用来进行代码重用。 Partial views 帮助我们减少重复代码。 因此 Partial views是可重用的,像Header和Footer视图那样。 我们可以使用它去显示博客评论,商品类别,社交按钮,动态时钟日历等等。 创建partial view 的最佳实践是在Shared文件夹创建并以 "_"为前缀命名,但这并不是强制的。视图以 "_" 为前命名则说明该view是一个可重用的。


Q71. 如何在controller中返回partial view ? Ans.return PartialView(options); 其中 options可以是一个Model或View名称。


Q72. ASP.NET MVC有哪几种方式用来返回一个Partial View? Ans. 主要有以下四种方式:Html.RenderPartial

  • 这种方式的结果会直接写入Http响应流,也就意味着它使用与当前页面/模板相同的TextWriter对象。
  • 这个方法返回值类型为void。
  • 可以直接使用不需要创建action。
  • 当Partial view中要显示的数据已经在相应的View Model中时,使用RenderPartial 方法将非常好用。比如:在博客中要显示一篇文章的评论,就可以使用RenderPartial来显示评论,因为文章信息及评论一般文章的View Model中填充了。@{Html.RenderPartial("_Comments");}
  • 这个方法比Partial方法快是因为它的结果直接写入响应流。

Html.RenderAction

  • T这种方式的结果会直接写入Http响应流,也就意味着它使用与当前页面/模板相同的TextWriter对象。
  • 这种方式,我们需要创建一个对应的child action 去呈现对应的partial view。
  • 当Partial view中要显示的数据与相应的View model相互独立时,使用这种方式比较有用。比如:在博客中需要在每一个页面显示文章分类列表。因为在文章分类列表会在不同的model中进行填充。@{Html.RenderAction("Category","Home");}
  • 当你想缓存一个partial view时,这个方法将是最佳选择。
  • 这个方法比Action方法快是因为它的结果直接写入响应流。

Html.Partial

  • 以html编码的字符串来呈现partial view。
  • 这个方法的结果可以存储在一个变量中,因为返回类型为string。
  • 可以直接使用不需要创建action。
  • 和RenderPartial相似,当Partial view中要显示的数据已经在相应的View Model中时,使用Partial 方法将非常好用。比如:在博客中要显示一篇文章的评论,就可以使用Partial来显示评论,因为文章信息及评论一般文章的View Model中填充了。@Html.Partial("_Comments")

Html.Action

  • 以HtmlString方式呈现partial view。
  • 这种方式,我们需要创建一个对应的child action 去呈现对应的partial view。
  • 这个方法的结果可以存储在一个变量中,因为返回类型为string。
  • 当Partial view中要显示的数据与相应的View model相互独立时,使用这种方式比较有用。比如:在博客中需要在每一个页面显示文章分类列表。因为在文章分类列表会在不同的model中进行填充。@{Html.Action("Category","Home");}
  • 这个方法将也是一个最佳选择,当你想缓存一个partial view时。

Q73. 介绍下ASP.NET MVC中的Area? Ans. Areas 是在Asp.net MVC2引入的。根据Web应用的functional sections(职能)来分离models,views,和 controllers。例如administration(后台管理),billing(订单处理),customer support(客户支持)等。 在大的web项目中,使用Area非常有帮助,它将每个模块放到单独的文件夹下处理。但同时,使用Area会导致难于管理。

Area截图

每一个Mvc area拥有自己的文件结构,用来分开保存controllers,和 models。这也有利于多个开发者共同开发同一个Web应用,而互不干扰。


Q74. ASP.NET MVC中如何注册Area? Ans. 在使用Area之前,确保已经在Global.asax的Application_Start方法中注册。

protected void Application_Start()
{
 //Register all application Areas
 AreaRegistration.RegisterAllAreas();
}

需要记住的是,必须在最开始注册Area,以至于注册的settings,filters 和 routes 能够应用于Area。


Q75. 什么是Child action以及如何调用它? Ans. 使用Child action 非去创建可重用的组件非常方便,它能直接植入你的视图。 ASP.NET MVC 的partial views 也是用来创建可重用的组件,一个Partial View可用通过一个Action 方法呈现。 Action方法可以用 child 特性标记,从而拥有独立于父视图的MVC生命周期。 Child action 不能独立被调用,一般在View的内部被调用。

[ChildActionOnly]
public ActionResult MenuBar()
{
 //TODO:
 return PartialView();
}

一个child action可以在一个View中通过@Html.RenderAction@Html.Action 来调用。


Q76. 什么是Scaffolding(脚手架)? Ans. Scaffolding 是一个用来高效生成基本的CRUD代码。 而且你可以根据自己的需求自定义自动生成的代码。 Scaffolding 包括page templates,entity page templates,field page templates,以及 filter templates。这些模板统称脚手架模板,帮助我们快速构建功能性数据驱动网站。


Q77. 脚手架模板在ASP.NET MVC是如何工作的? Ans. Scaffold templates 在EF的帮助下生成基本的代码用来基本的CRUD操作。这些模板使用的是Visual Studio T4 模板系统去生成视图来进行CRUD操作。 下面是具体的步骤:

1.添加Controller

2.选择脚手架模板生成CRUD

2.命名Controller

最终生成的代码


(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读