1. 程式人生 > >三分鐘快速複習MVC知識

三分鐘快速複習MVC知識

讀這篇文章不意味著你一定要去並且能搞定MVC面試。這篇文章的目的是在面試之前讓你快速複習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
  • Html.ValidationSummary  Helper Method
  • DefaultValueAttribute  in Action-Method
  • Parameters binding
  • Binary data with Model Binders
  • DataAnnotations Attributes
  • Model-Validator Providers
  • New  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程式碼。

<%= 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”控制器並且呼叫 DisplayCustomer 。這個通過Maproute方法來定義。程式碼如下:

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

在哪裡寫路由對映表?

在 “ global.asax ” 檔案。

我們可以對映多個URL到同一個動作嗎?

是的,可以。只需要新增多條不同Key名字的記錄,並且指定同樣的控制器和動作。

使用hyperlink生成連結,如何從一個檢視連結到另一個檢視?

使用 ActionLink 方法,如下圖所示。下面的程式碼生成一個簡單的URL,連結到"Home"控制器的GotoHome動作。

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

如何限制一個動作的型別為GET或POST?

我們可以給MVC的動作一個HttpGet或HttpPost屬性去限制HTTP的型別。你可以看下面的程式碼段,這個 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
原文地址:https://www.cnblogs.com/Hackson/p/7055695.html