首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET MVC View 呈現機制設計篇:ViewEngine、IView、ViewContext 架構全景

     編輯:關於ASP.NET

核心介面:IView

public interface IView
{
    void Render(ViewContext viewContext, TextWriter writer);
}

單一 Render 方法,輸入 ViewContext (含 ViewData、ViewBag、TempData、ClientValidationEnabled 等) 與輸出 TextWriter (實為 HttpResponse.Output)。

ViewContext 關鍵屬性

  • ViewData/ViewBag/TempData:來自 Controller 同名屬性。
  • ClientValidationEnabled、UnobtrusiveJavaScriptEnabled:預設從 web.config appSettings 讀取,可被 HtmlHelper 靜態屬性或實例方法覆寫。

啟用/停用客戶端驗證配置

<appSettings>
  <add key="ClientValidationEnabled" value="true"/>
  <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>

程式碼控制:HtmlHelper.ClientValidationEnabled、Html.EnableClientValidation()、Html.EnableUnobtrusiveJavaScript()。

兩大內建 ViewEngine

引擎View 類別檔案副檔名
WebFormViewEngine (ASPX)WebFormView.aspx, .ascx
RazorViewEngineRazorView.cshtml, .vbhtml

皆繼承 BuildManagerViewEngine → VirtualPathProviderViewEngine → IViewEngine。

ViewResult 執行流程

  1. Action 回傳 ViewResult (或 PartialViewResult)。
  2. ViewResult.ExecuteResult 呼叫 FindView/FindPartialView 取得 ViewEngineResult。
  3. 若成功,取得 IView 執行 view.Render(viewContext, writer)。
  4. 最後呼叫 viewEngine.ReleaseView 釋放。

ViewEngine 選擇與排序

ViewEngines.Engines 集合順序決定嘗試順序。預設:RazorViewEngine 優先於 WebFormViewEngine。可自訂順序或清空註冊單一引擎。

View 搜尋慣例 (VirtualPathProviderViewEngine)

  • ViewLocationFormats、PartialViewLocationFormats、MasterLocationFormats 定義路徑模板。
  • 支援 {0} (ViewName)、{1} (ControllerName)、{2} (AreaName)。
  • Area 請求優先搜尋 Area 目錄,再回退通用目錄。

總結

MVC View 呈現架構以 IView 為核心契約,ViewEngine 負責尋找/建構 View,ViewResult 協調執行流程。ViewContext 傳遞執行所需上下文。理解此分層設計可自訂引擎、修改搜尋慣例或整合第三方模板引擎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved