查詢了一下關(guān)于 MVC 中的模型綁定,大部分都是關(guān)于如何使用的,以及模型綁定過程中的一些用法和概念,很少有關(guān)于模型綁定的內(nèi)部機(jī)制實(shí)現(xiàn)的文章,本文就來(lái)講解一下在 ASP.NET Core MVC 中模型綁定是如何實(shí)現(xiàn)的,以及它的一些其他用法。
模型綁定的用途
通常情況下,我們?cè)谑褂?MVC 框架的時(shí)候不需要關(guān)注模型綁定的相關(guān)功能,因?yàn)樗羌傻?MVC 框架內(nèi)部的,當(dāng)我們?cè)跒g覽器訪問一個(gè)地址的時(shí)候,無(wú)論是 GET 還是 POST 訪問,在映射到 Action 的過程中 MVC 框架已經(jīng)自動(dòng)的進(jìn)行了對(duì)象或者是路由參數(shù)的綁定,這其中就是使用的模型綁定。
在 ASP.NET Core MVC 中,模型綁定分為簡(jiǎn)單模型綁定和復(fù)雜模型綁定。簡(jiǎn)單的模型綁定比如直接從 Form 表單或者 URL 路由數(shù)據(jù)中獲取信息,然后應(yīng)用到Action方法的各個(gè)參數(shù)上,復(fù)雜模型綁定的話可能就不是簡(jiǎn)單的轉(zhuǎn)換到參數(shù)的值上面了,可能中間還會(huì)涉及到一些數(shù)據(jù)類型轉(zhuǎn)換,模型分解,參數(shù)校驗(yàn)等。
下面來(lái)看一下模型綁定的一個(gè)示例:
假設(shè)我們有一個(gè)ViewModel對(duì)象叫 Person
,它的代碼如下:
public class Person{ public string Name { get; set; } public int Age { get; set; } }
在這個(gè) ViewModel 對(duì)象中,都是使用的一些很簡(jiǎn)單的類型,那么我們的 Action 進(jìn)行如下的定義:
public class PersonController{ [HttpPost] [Route("~api/person/add")] public IActionResult CreatePerson(Person person) { return Ok(person); } }
在上面的代碼中,我們可以向
網(wǎng)友評(píng)論