<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hant-TW">
	<id>https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=ASP.NETMVCFramework</id>
	<title>ASP.NETMVCFramework - 修訂紀錄</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.taigi.ima.org.tw/w/index.php?action=history&amp;feed=atom&amp;title=ASP.NETMVCFramework"/>
	<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=ASP.NETMVCFramework&amp;action=history"/>
	<updated>2026-06-26T10:33:20Z</updated>
	<subtitle>本 wiki 上此頁面的修訂紀錄</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://wiki.taigi.ima.org.tw/w/index.php?title=ASP.NETMVCFramework&amp;diff=461155&amp;oldid=prev</id>
		<title>TaiwanTonguesApiRobot：​從 JSON 檔案批量匯入</title>
		<link rel="alternate" type="text/html" href="https://wiki.taigi.ima.org.tw/w/index.php?title=ASP.NETMVCFramework&amp;diff=461155&amp;oldid=prev"/>
		<updated>2025-08-23T04:30:16Z</updated>

		<summary type="html">&lt;p&gt;從 JSON 檔案批量匯入&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新頁面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;ASP . NET MVC Framework&amp;#039;&amp;#039;&amp;#039;是略仔軟佇咧 ASP . NET 中所添加的一組類別庫，這組類別庫會使用 Model-View-Controller 的設計模式來開發 ASP . NET 的應用程式。伊佮現有的 ASP . NET 應用程式並無衝突，所以兩个人是會當並行的。ASP . NET MVC Framework 予人包裝佇 System . Web . Mvc . dll 中，並利用 ASP . NET Routing 來支援動作流和 URL Rewriting 的能力，予伊會當閣較倚 Web 的發展佮 Web 二鋪零的特性。對這多數有 ASP 開發經驗的開發人員來講看起來較袂生份，但是對著無接觸過像 ASP、PHP、JSP、Perl 這是 Web 開發工具的開發人員來講，相對的無簡單入門。ASP . NET MVC 的頭一个版本佇二空空九年三月十七日釋出 RTM 版本，上新的 ASP . NET MVC 五鋪二是二空一四年十二月二十四正式發行。&lt;br /&gt;
&lt;br /&gt;
微軟於 ASP . NET Core 中提出後一代的 MVC 框架，這號做 ASP . NET Core MVC。&lt;br /&gt;
&lt;br /&gt;
==原理==&lt;br /&gt;
&lt;br /&gt;
ASP . NET MVC 是遵循軟體模式的 Model-View-Controller 來發展，其中 Model 講的是資料抑是業務邏輯元件，View 是呈現予使用者看的資訊，而且 Controller 是欲接取來自使用者的指令佮資料，並將 Model 佮 View 做整合的控制器，做侍服器接著著 ASP . NET MVC 應用程式的要求的時陣，侍服器（IIS）可以先用 UrlRoutingModule ( ASP . NET Routing 的 HTTP 模組 )，由伊來解析敢有包括 ASP . NET MVC 應用程式的 URL，若有，著會產生一个&amp;#039;&amp;#039;&amp;#039;MvcRouteHandler&amp;#039;&amp;#039;&amp;#039;東西，這个物件會裝載執行的必要資訊，並且會呼叫包括佇內底 URL 中的 Controller 的 Execute 方法來執行工課。&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Controller&amp;#039;&amp;#039;&amp;#039;物件是因為 ` IController ` 介面的規則所定義，提供針對 HTTP 要求做回應的一个執行工具，佇咧 ASP . NET MVC 中已經實作一个預設的類別 Controller，提供必要的基礎功能，另外嘛發展一个 Controller 工場，這號做 Controller Factory，以 ` IControllerFactory ` 介面定義，亦提供了&amp;#039;&amp;#039;&amp;#039;DefaultControllerFactory&amp;#039;&amp;#039;&amp;#039;，開發人員會當用基本的類別以及利用𪜶來衍生家己的 Controller 抑是 Controller Factory 來實作家己的控制器邏輯功能。&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Model&amp;#039;&amp;#039;&amp;#039;物件攏是為著 ASP . NET MVC 提供資料，毋過伊無基礎類別，是使用 . NET Framework 一般性的資料結構抑是這馬現代的 ADO . NET 資料物件，像講 List、Dictionary、DataTable、DataReader 佮 DataSet 等咧，當然嘛會當是家己開發的商業物件，遮的資料會透過 ASP . NET MVC 的&amp;#039;&amp;#039;&amp;#039;ModelBinder&amp;#039;&amp;#039;&amp;#039;這工具類別來佮 Controller 整合，ModelBinder 本身是支援泛型 ( Generic ) 的，因為各種型別的資料伊攏會當使用。佇咧 ASP . NET MVC 中提供一个&amp;#039;&amp;#039;&amp;#039;DefaultModelBinder&amp;#039;&amp;#039;&amp;#039;東西，會當支援大多數 . NET Framework 資料型別，以及陣列佮已經實作的親像 IList、IDictionary 以及 ICollection 等介面的東西。&lt;br /&gt;
&lt;br /&gt;
Model 會佇咧 Controller 執行動作的時，做為一个 ActionResult 物件的方式傳轉來予 MvcHandler 東西，這个物件就會指定欲顯示 View 東西，親像下列程式碼所示講：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;View&amp;#039;&amp;#039;&amp;#039;東西以 ` IView ` 佮 ` IViewDataContainer ` 等介面為主，並且以 ASP . NET 的各式頭前捀介面為主要輸出工具，是因為 MVC 的 View 彈性化設計考量，以往佇咧 ASP . NET Web Form 的程式碼佮 HTML 分離模式會閣存在無閣有，是將程式碼佮 HTML 混合的方式設計，予開發人員會當閣較精確的著 View 進行控制，佇目前 ASP . NET MVC 支援的 View 有下列幾種：&lt;br /&gt;
&lt;br /&gt;
* . aspx 網頁，由&amp;#039;&amp;#039;&amp;#039;ViewPage&amp;#039;&amp;#039;&amp;#039;來支援。&lt;br /&gt;
* . ascx 使用者控制項，由&amp;#039;&amp;#039;&amp;#039;ViewUserControl&amp;#039;&amp;#039;&amp;#039;來支援。&lt;br /&gt;
* . master 主版頁面，由&amp;#039;&amp;#039;&amp;#039;ViewMasterPage&amp;#039;&amp;#039;&amp;#039;來支援。&lt;br /&gt;
&lt;br /&gt;
彼每一个 View 物件攏會內含一个泛型的參數，用來裝載欲呈現的資料 ( 即 Model )，然後使用類似下跤的方式來呈現資料：&lt;br /&gt;
&lt;br /&gt;
==技術==&lt;br /&gt;
&lt;br /&gt;
佇咧 ASP . NET MVC 架構內底，除了 Controller、Model 佮 View 三个主要部份以外，閣包括真濟技術以予這三層得整合並互動的運作。&lt;br /&gt;
&lt;br /&gt;
===Controller===&lt;br /&gt;
&lt;br /&gt;
Controller 佇咧 ASP . NET MVC 應用程式中是負責中控的角色，嘛是對使用者捀 HTTP 要求的處理核心，所以有誠濟處理佮轉向 HTTP 要求的輔助技術佇咧 Controller 層次攏會用著。&lt;br /&gt;
&lt;br /&gt;
====ASP . NET 路是由技術====&lt;br /&gt;
&lt;br /&gt;
用來過濾使用者捀要求的 URL，而且藉著定義好的路由來表 ( route table ) 共要求導向至正確的 MVC Controller，並呼叫 Controller 中的 Execute 方法執行，而且 Execute 彼方法會共 HTTP 動作佮實際執行的指令交予正確的函式來執行。而通常伊一个 MVC 應用程式的 URL 攏會是類似按呢的 URL 格式：&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
http : / / 一百二十七孵空 . 空七一 / ControllerName / ActionName / ActionParameters&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
而且 MvcRouteHandler 會拆解 URL，揣出目標的 Controller，而且將 ActionName 以及 ActionParameters 傳予 Controller 中負責的函式（以 ActionName 來指定）。 比如講下列的 URL 會傳遞予 BlogController 的 GetList 方法：&lt;br /&gt;
&lt;br /&gt;
` ` `&lt;br /&gt;
http : / / 一百二十七孵空 . 空七一 / Blog / GetList&lt;br /&gt;
` ` `&lt;br /&gt;
&lt;br /&gt;
====動作佮方法直接整合====&lt;br /&gt;
&lt;br /&gt;
ASP . NET MVC 利用中介資料的技術，直接共方法對應著指定的 HTTP 動詞 ( GET / POST / PUT / DELETE / HEAD 等 )，MvcHandler 會判斷要求的類別，閣共伊交予 URL 中指定的方法來處理。目前 MVC Framework 會當用下列的方式指定（攏包含講佇 HttpVerbs 列舉型別中）：&lt;br /&gt;
&lt;br /&gt;
* ` HttpVerbs . Get `&lt;br /&gt;
* ` HttpVerbs . Post `&lt;br /&gt;
* ` HttpVerbs . Delete `&lt;br /&gt;
* ` HttpVerbs . Put `&lt;br /&gt;
* ` HttpVerbs . Head `&lt;br /&gt;
&lt;br /&gt;
====共資料模型佮展示層直接包裝====&lt;br /&gt;
&lt;br /&gt;
` ViewPage `、` ViewMasterPage `、` ViewUserControl ` 等展示物件攏支援泛型物件，會當直接裝載 Model 資料傳佇咧送到前端輸出，會當簡單來處理 Model 佮 View 之間整合的動作之間，只要一个參數就會當將資料傳予 View：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Model===&lt;br /&gt;
&lt;br /&gt;
佇咧 ASP . NET MVC 中，Model 相對無欲設，會使使用內建的資料結構猶閣有自訂的資料類別，嘛會當是一个商業的物件，所以 Model 的𩚨度真大，除了前講的資料結構外，微軟新發展的一寡資料存取方式嘛會當應用佇咧 Model 中，像講 ADO . NET Entity Framework 佮 LINQ to SQL 等技術。&lt;br /&gt;
&lt;br /&gt;
另外咧，MVC 咧侍服捀資料驗證中，提供矣 ` ViewDataDictionary ` 類別，這類別有一个&amp;#039;&amp;#039;&amp;#039;ModelState&amp;#039;&amp;#039;&amp;#039;屬性，內含著 ` ModelStateDictionary ` 類別，開發人員會當用這个類別來控制資料驗證的結果，而且 View 中輸出驗證訊息的部份會佮此類別有關聯，像下列的程式：&lt;br /&gt;
&lt;br /&gt;
佇咧 ASP . NET MVC 二孵空中，新增加一个會當直接予 MVC Framework 針對資料欄位進行驗證控制的模型，這號做 Model Validation，伊融合了在矣 . NET Framework 三人五 SP 一發表的 ASP . NET Dynamic Data Framework 中 Data Annotations ( 資料記號 ) 的特性，予開發人員會使只利用標記的方式來執行驗證，或者是利用自訂的程式碼來擴充資料記號的驗證行為。&lt;br /&gt;
&lt;br /&gt;
===View===&lt;br /&gt;
&lt;br /&gt;
因為 View 是直接呈現予使用者，因此佮使用者互動的部份攏愛由此層處理，包含資料的輸出猶閣有使用者捀操作為主的回應（譬如講令碼）等。&lt;br /&gt;
&lt;br /&gt;
====HTML 工具類別====&lt;br /&gt;
&lt;br /&gt;
HTML 家私類別佇咧 View 中間是重要的輸出家私，伊內底起輔助產生 HTML 標籤的工具辦法，多數的 HTML 語法攏會當利用伊來產生，包含親像連結 ( &amp;lt; a &amp;gt; )、表單 ( &amp;lt; form &amp;gt; ) 猶閣有表單控制項等等。HTML 工具是以 ` HtmlHelper ` 類別為核心，閣配合 System . Web . Mvc . Html 號名空間的方法，以延伸方法 ( Extension Method ) 的方式，予產生 HTML 的程式就有如呼叫方法般簡單：&lt;br /&gt;
&lt;br /&gt;
====資料驗證====&lt;br /&gt;
&lt;br /&gt;
View 的 HTML 工具會當配合 Model 處理資料驗證的結果，佇咧 ASP . NET 中常用的 ValidationSummary 佇遮嘛支援，而且 MVC 的架構予驗證資訊的輸出嘛閣較𩚨：&lt;br /&gt;
&lt;br /&gt;
====無仝類型的輸出====&lt;br /&gt;
&lt;br /&gt;
彼每一个 Controller 中負責回應的方法，攏會回傳一个 ActionResult 物件的資訊，ActionResult 是一个執行結果物件的封裝體，當 MvcHandler 執行指令接著 ActionResult 時，就會依照伊的內容來輸出資料。目前 MVC Framework 支援的 ActionResult 有下列幾種：&lt;br /&gt;
&lt;br /&gt;
* ` ViewResult ` 東西，這个物件內底載矣 ` IView ` 介面的資訊，以及 ` IViewEngine ` 的資訊，實際產生輸出資料的會是 IViewEngine，佮其指示的 View 東西。&lt;br /&gt;
* ` PartialViewResult ` 東西，佮 ` ViewResult ` 相仝，但是伊回傳的是 &amp;quot; 部份展示 &amp;quot;，就算用者控制項的 View。&lt;br /&gt;
* ` ContentResult ` 東西，裝載由使用者自訂的 Content-Type 佮資料。&lt;br /&gt;
* ` EmptyResult ` 東西，表示不回傳任何物件。&lt;br /&gt;
* ` HttpUnauthorizedReuslt ` 東西，表示動作無予授權（即 HTTP 四百空一）的錯誤訊息。&lt;br /&gt;
* ` JavaScriptResult ` 東西，表示回傳的是 JavaScript 指令碼。&lt;br /&gt;
* ` JsonResult ` 東西，表示回傳的是 JSON 資料。&lt;br /&gt;
* ` FileResult ` 東西，表示回傳的是一个檔案的資料。&lt;br /&gt;
* ` RedirectResult ` 東西，表示回傳的是一个重導向 ( HTTP Redirect ) 指令。&lt;br /&gt;
* ` RedirectToRouteResult ` 東西，佮 RedirectResult 類似，但是伊是重導向予一个 Route 的路徑。&lt;br /&gt;
&lt;br /&gt;
透過多類型的 ActionResult，開發人員會當自由決定欲回傳的資料的類型佮格式。&lt;br /&gt;
&lt;br /&gt;
==應用==&lt;br /&gt;
&lt;br /&gt;
目前小可仔軟有一个 Oxite 專案，是使用 ASP . NET MVCFramework 所開發的部落格 ia̋n-jín，啊若這个案已經予微微仔應用平台所採用，像講 MIX Online、PDC 二千空九、MIX Video 等官方網站攏是採用伊來開發。另外咧，stackoverflow . com 以及 codeplex . com 這兩个網站嘛是採用 ASP . NET MVC Framework。&lt;br /&gt;
&lt;br /&gt;
==版本的過程==&lt;br /&gt;
&lt;br /&gt;
==授權==&lt;br /&gt;
&lt;br /&gt;
ASP . NET MVC Framework 雖然是 ASP . NET 的一部份，猶毋過伊的原始碼是透過 Microsoft Public License ( MS-PL ) 的授權模式公開，所以佇遮 MS-PL 授權的範圍內底，任何人是會當去檢視佮修改伊的原始碼的。&lt;br /&gt;
&lt;br /&gt;
==ASP . NET MVC Razor Engine==&lt;br /&gt;
&lt;br /&gt;
微軟佇咧二空一空年七月初二由 Scott Guthrie 發表新的 MVC 畫製 ia̋n-jín ( Render Engine )：Razor Engine，伊已經內底建佇咧 ASP . NET MVC 三更空中發布，伊具有下列功能：&lt;br /&gt;
&lt;br /&gt;
一 . 閣較輕量化而且直覺的語法，減少佇咧 View 中輸出資料的時陣使用的語法，予 View 的指令更加簡潔，像使用 &amp;quot; @ &amp;quot; + 變數名稱的方式，就會使輸出程式中的變數，毋免閣用 &amp;lt; %   % &amp;gt; 來設定。若程式有足濟行，會用得使用 @ { } 的方式來設定。&lt;br /&gt;
二 . 容易學習。&lt;br /&gt;
三 . 會當相容佇這馬的程式語言 ( ex : C # )。&lt;br /&gt;
四 . 透過 Visual Studio，可享有 Intellisense 能力。&lt;br /&gt;
五 . 會當透濫 HTML 佮程式語言指令。&lt;br /&gt;
六 . 通用各種無仝款的文字編輯器編輯。&lt;br /&gt;
七 . 有單元測試的能力。&lt;br /&gt;
&lt;br /&gt;
==參考資料==&lt;br /&gt;
&lt;br /&gt;
==外部網站==&lt;br /&gt;
&lt;br /&gt;
* ASP . NET MVC 官方網站&lt;br /&gt;
* MSDN ASP . NET Virtual Labs&lt;br /&gt;
* ASP . NET MVC Documentations&lt;br /&gt;
&lt;br /&gt;
===View engines===&lt;br /&gt;
&lt;br /&gt;
* MvcContrib&lt;br /&gt;
* StringTemplate View Engine&lt;br /&gt;
* Spark&lt;br /&gt;
* NDjango&lt;br /&gt;
* Naked Objects MVC&lt;br /&gt;
* Razor（按算 ASP . NET MVC 三更零匯入）&lt;br /&gt;
&lt;br /&gt;
[[分類: 待校正]]&lt;/div&gt;</summary>
		<author><name>TaiwanTonguesApiRobot</name></author>
	</entry>
</feed>