本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答的形式进行展开。通读此书,会帮助你对ASP.NET MVC有更深层次的理解。

由于个人技术水平和英文水平也是有限的,因此错误在所难免,希望大家多多留言指正。

系列导航

Asp.net mvc 知多少(一)

Asp.net mvc 知多少(二)

Asp.net mvc 知多少(三)

Asp.net mvc 知多少(四)

Asp.net mvc 知多少(五)

Asp.net mvc 知多少(六)

Asp.net mvc 知多少(七)

Asp.net mvc 知多少(八)

本节主要讲解了PartialView

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会导致难于管理。

每一个Mvc area拥有自己的文件结构,用来分开保存controllers, views, 和 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操作。

下面是具体的步骤:


Asp.net mvc 知多少(七)的更多相关文章

  1. Asp.net mvc 知多少(八)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问[http: ...

  2. Asp.net mvc 知多少(九)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  3. Asp.net mvc 知多少(十)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  4. Asp.net mvc 知多少(一)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  5. Asp.net mvc 知多少(三)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  6. Asp.net mvc 知多少(六)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  7. Asp.net mvc 知多少(五)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  8. Asp.net mvc 知多少(四)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  9. Asp.net mvc 知多少(二)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

随机推荐

  1. 19、手把手教你Extjs5(十九)模块Grid的其他功能的设想

    经过对自定义模块和Grid的设计和编码,现在已经能对一个有配置信息的模块来生成界面并进行一些简单的CURD操作.由于这是一个全解释性的前台的架构,因此你想到的任何新主意都可以放到所有的模块中. 比如对 ...

  2. 【转】C++ 11 右值引用的理解

    右值引用的目的之一,是为了C++中一个比较影响性能的问题:拷贝临时对象,例如,在 int foo(){ ... } int x; x = foo(); 中,在第三句中,发生了以下的事情: 1.销毁 x ...

  3. MPU6050首例整合性6轴的姿态模块(转)

    源:MPU6050首例整合性6轴的姿态模块 Mpu6050为全球首例整合3轴陀螺仪.3轴加速器.含9轴融合演:MPU-6000为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速 ...

  4. 如何让搜索引擎抓取AJAX内容? 转

    越来越多的网站,开始采用"单页面结构"(Single-page application). 整个网站只有一张网页,采用 Ajax 技术,根据用户的输入,加载不同的内容. 这种做法的 ...

  5. Sublime Text 快捷键--持续更新

    快捷键 功能 说明 ctrl+D 选取一个单词连续按组合键会选择页面所有相同的这个单词   ctrl+Z 撤销上一个操作   ctrl+Y 恢复上一个操作   ctrl+shift+F 底部打开搜索全 ...

  6. 字符串处理,NSNumber转换

    more:http://www.superqq.com/blog/categories/ioskai-fa/ 1.判断字符串是否为空 if ([text lenght] == 0) {     //  ...

  7. 继续PHP

    2014-04-08 09:44:43 继续PHP. 邵杨继续回来 工作,安卓还是交给他.

  8. APK的反编译

    有秘密的地方就有见不得光的东西,我讨厌这些,所以对于某一个XX圈APP极其反感,感觉就像一个色情网站 一.ApkTool的使用 看了几个教程,自己下载的好像总是不完整,下载包解压后一个没有aapt.e ...

  9. 《C++ Primer》 chapter 15 TextQuery

    <C++ Primer>中第15章为了讲解面向对象编程,举了一个例子:设计一个小程序,能够处理查询给定word在文件中所在行的任务,并且能够处理“非”查询,“或”查询,“与”查询.例如执行 ...

  10. eclipse hibernate plugin

    JBoss Tools hibernate tools for eclipse plugins