tnblog
首页
视频
资源
登录

三分钟快速复习MVC知识

7017人阅读 2018/11/29 15:12 总访问:186453 评论:1 收藏:0 手机
分类: .NET

读这篇文章不意味着你一定要去并且能搞定MVC面试。这篇文章的目的是在面试之前让你快速复习MVC知识。

什么是MVC (模型 视图 控制器)?

MVC是一个架构模式,它分离了表现与交互。它被分为三个核心部件:模型、视图、控制器。下面是每一个部件的分工:

  • 视图是用户看到并与之交互的界面。

  • 模型表示业务数据,并提供数据给视图。

  • 控制器接受用户的输入并调用模型和视图去完成用户的需求。

图: MVC (模型、视图、控制器)

你能解释下MVC的完整流程吗?

下面是MVC(模型、视图、控制器)架构的控制流程:

  • 所有的终端用户请求被发送到控制器。

  • 控制器依赖请求去选择加载哪个模型,并把模型附加到对应的视图。

  • 附加了模型数据的最终视图做为响应发送给终端用户。

MVC同时适用于Windows应用和Web应用吗?

相比Windows应用,MVC架构更适用于Web应用。对于Windows应用,MVP(Model View Presenter )架构更好一点。如果你使用WPF和Silverlight,MVVM更适合。

使用MVC有哪些好处?

MVC有两个大的好处:

  • 分离了关注点。后台代码被移到单独的类文件,我们可以最大限度的重复利用代码。

  • 自动化UI测试成为可能,因为后台代码移到了.NET类。这让我们更容易做单元测试和自动化测试。

MVC不同于三层架构?

MVC是三层传统架构的演变。三层架构和MVC有一些通用的组成部分。 显示如下:

功能性三层 / 分层架构Model view controller architecture
显示与交互用户界面视图
UI逻辑用户界面控制器
商业逻辑 / 验证中间层模型
请求首先发送给谁?用户界面控制器
访问数据数据链接层数据链接层

图示: 三层架构

MVC的最新版本是哪个?

在写这篇文章时MVC已经发行了4个版本:MVC 1 , MVC 2, MVC 3, 和 MVC 4. 所以 MVC 4是最新版本。

每个版本的MVC有什么不同?

下面的表格列出了详细的不同点。但是在面试中限于时间问题,很难去说出所有的东西。所以,我标出了所有重要区别。

MVC 2MVC 3MVC 4
  • Client-side validation

  • Templated Helpers Areas

  • Asynchronous Controllers

    1. Html.ValidationSummary
      Helper Method

    1. DefaultValueAttribute
      in Action-Method

  • Parameters binding

  • Binary data with Model Binders

  • DataAnnotations Attributes

  • Model-Validator Providers

  • New  

    1. RequireHttpsAttribute
     Action Filter

  • Templated Helpers

  • Display Model-Level Errors

  • Razor

  • Readymade project templates

  • HTML 5 enabled templates

  • Support for Multiple View Engines, JavaScript, and AJAX

  • Model Validation Improvements

  • ASP.NET Web API

  • Refreshed and modernized default project templates. New mobile project template.

  • Many new features to support mobile apps

  • Enhanced support for asynchronous methods

MVC中的HTML helpers是什么?

HTML helpers帮助你渲染视图中的HTML控件。如果在面试中你想展示HTML输入框,下面是HTML helper代码。

  1. <%= Html.TextBox("LastName") %>

checkbox的代码如下。用这种方式我们可以创建现存的所有HTML控件。

<%= Html.CheckBox("Married") %>

“HTML.TextBox” 和 “HTML.TextBoxFor”有什么不同?

它们两个输出相同的HTML, “HTML.TextBoxFor”是强类型的,但 “HTML.TextBox”不是。下面是一个实例,它仅仅创建了一个名字为 “CustomerCode”的输入框。  

Html.TextBox("CustomerCode")

下面的代码是用 “Html.TextBoxFor” 创建的HTML输入框,从对象"m"中调用了属性”CustomerCode “。

Html.TextBoxFor(m => m.CustomerCode)

相同的方式,我们可以用“Html.CheckBox” 和 “Html.CheckBoxFor”创建checkbox。

MVC的路由选择是什么?

路由选择功能帮你定义一个URL规则,映射URL到控制器。

举一个例子,我们想让用户输入“ http://localhost/View/ViewCustomer/ ”时,它转向到“Customer”控制器并且调用 

  1. DisplayCustomer
 。这个通过Maproute方法来定义。代码如下:

  1. routes.MapRoute(               "View"// Route name               "View/ViewCustomer/{id}", // URL with parameters               new { controller = "Customer", action = "DisplayCustomer", 
  2. id = UrlParameter.Optional }); // Parameter defaults

在哪里写路由映射表?

在 “ global.asax ” 文件。

我们可以映射多个URL到同一个动作吗?

是的,可以。只需要添加多条不同Key名字的记录,并且指定同样的控制器和动作。

使用hyperlink生成链接,如何从一个视图链接到另一个视图?

使用 

  1. ActionLink
 方法,如下图所示。下面的代码生成一个简单的URL,链接到"Home"控制器的GotoHome动作。

<%= Html.ActionLink("Home","Gotohome") %>

如何限制一个动作的类型为GET或POST?

我们可以给MVC的动作一个HttpGet或HttpPost属性去限制HTTP的类型。你可以看下面的代码段,这个 

  1. DisplayCustomer
 动作只能用HttpGet方式访问。如果我们尝试用Http post的方式,会看到错误信息。

[HttpGet]
public ViewResult DisplayCustomer(int id)
{
    Customer objCustomer = Customers[id];
    return View("DisplayCustomer",objCustomer);
}

在MVC中如何保持Sessions?

可以通过三种方式保持: tempdata, viewdata, 和viewbag。

tempdata, viewdata, 和 viewbag之间有什么不同?

图示:  tempdata, viewdata, 和viewbag之间不同点

  • Temp data  -在不同的控制器或动作间转换时保持数据。另外,进行页面转向时,tempdata可以保持数据。它是一个内部的Session变量。

  • View data  - 可以在控制器和视图间保持数据。

  • View Bag  -  它是视图数据的动态包装。使用Viewbag不需要类型转换。它使用的是内部动态关健词。 

图示: 动态关键词

  • Session 变量 -  使用Session变量可以在任何实体间保持数据。

  • 隐藏字段和HTML控件 -  只能何持数据从UI到Controller。可以使用HTML控制器或隐藏字段,用HTTP方式(POST或GET)发送数据到控制器。

下表是汇总:

Maintains data betweenViewData/ViewBagTempDataHidden fieldsSession
Controller to ControllerNoYesNoYes
Controller to ViewYesNo



欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

瑾语

2019/3/6 15:44:54

棒 总结的很好

.net MVC分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

Idea下使用maven搭建SSM(一):SpringMVC

Spring MVC是一款基于MVC架构模式的轻量级Web框架,其目的是将Web开发模块化,对整体架构进行解耦,简化Web开发流程。下面...

C MVC RedirectToAction跳转时候传递参数,Action之间传值

MVC Action之间传值,页面跳转传值方法一:路由传值很简单直接使用 RedirectToAction(string actionName, string controller...

.net MVC 登录后跳回原来的页面

把当前连接传递到登录界面,然后登录后根据那个连接跳转回来就好跳转前可以使用Request.Url获取当前页面的地址:&lt;ahref=...

在idea下搭建Spring Boot+Spring MVC+thymeleaf

今天大兄弟来讲一下在idea下,使用Spring Boot ,搭建Spring MVC+thymeleaf。在Java开发领域,Spring Boot算得上是一颗耀眼...

MVC过滤器

过滤器:过滤器(filter):是基于AOP(面向接口编程)的设计,它的作用是对MVC框架处理客户端请求注入额外的逻辑。本质:...

asp.net MVC @helper用法

@helper可以在视图定义一个公共块,这样就可以实现代码的重复调用下面来一个很简单的例子:就是输出一个list的数据。实际项...

扩展MVC实现model直接传递匿名对象

如果我们直接通过model传递匿名对象,是不行滴后台通过model传递一个匿名对象publicActionResultIndex() { returnView(ne...

ASP.NET MVC从请求到响应发生了什么

先就贴一张图哦在来一张

.net core MVC中其他类库获取appsettings.json

appsetting:{ &quot;ApplicationSettings&quot;:{ &quot;DalAssemblyName&quot;:&quot;INGEFDal&quot; }, ... }c#:pu...

.NET MVC 使用百度编辑器详细教程:(1)配置编辑器

一、什么是百度编辑器百度编辑器UEditor是由百度web前端研发部开发一款应用于网站的编辑器,具有轻量,可定制,注重用户体...

Asp.net MVC 利用(aspose+pdfobject.js) 实现在线预览office文档

Aspose.Total是Aspose公司旗下的最全的一套office文档管理方案,通过它,我们可以有计划地操纵一些商业中最流行的文件格式...

asp.net MVC 下载文件

方法1:publicvoidDownLoad() { stringfilePath=&quot;文件路径&quot;; using(FileStreamfs=newFileStream(filePath,Fil...

ASP.NET MVC + WebUploader+BootStrap实现文件上传进度条显示

引入需要的资源文件:&lt;scriptsrc=&quot;~/Content/jquery-1.9.1.min.js&quot;&gt;&lt;/script&gt; &lt;linkhref=&quot;...

ASP.NET MVC + WebUploader实现文件上传二:使用中的一些问题

如何把文件选择按钮换成自己的因为WebUploader设置关联的上传id会有他的样式,有时候想换成自己的开始想的是添加自己的文件...
真正的顺其自然,其实是竭尽所能之后的不强求,而非两手一摊的不作为
排名
19
文章
24
粉丝
11
评论
15
css实现简单矩形对话框
剑轩 : 现在来看一下,这个正好用到
三分钟快速复习MVC知识
瑾语 : 棒 总结的很好
渣渣学安卓之时间选择器和文本框操作
修心 : 666666横线的方式和我想法完全一样
渣渣学安卓之banner图和首页布局
晓见 : 哇哦,小姐姐这个系列文章写得很好哇,期待更多佳作~
渣渣学安卓之登录摸索及页面效果实现
剑轩 : 帅帅帅帅帅!那个背景图是不是有点太大了哦。哈哈相素太高了么,可...
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术