2017-03-11 97 views
0

我是新來的MVC,我想知道是什麼形式MVC 5 [HttpPost]屬性還是在表單標籤內張貼?

<form action="" method="post"> 
    <input type="text" name="something" value="something" /> 
    <input type="text" name="something" value="something"/> 
    <input type="submit" value="Submit" /> 
</form> 

裏面的屬性[HttpPost]和POST方法之間的區別?他們是同一事物或...我很困惑

回答

1
<form action="" method="post"> </form> 

這裏method="post"不是ASP.NET MVC的東西。這是正常的HTML form tag specification它告訴當表單被提交時,它將使用POST方法(而不是表單數據作爲查詢字符串值提交的GET)。當您使用POST時,表單數據將成爲請求BODY的一部分。

在ASP.NET MVC的世界中,屬性裝飾器[HttpPost]告訴框架,action方法(我們使用這個裝飾器)用於處理來自類型爲「POST」的客戶端(瀏覽器)的請求(形式方法)。這有助於框架從請求主體讀取數據並根據需要使用它(對於模型綁定等)

總之,兩者是不同的東西。一個是客戶端,另一個是服務器代碼。但是,您通常一起使用它來構建客戶端表單和服務器端方法來處理提交的表單。

+0

'[HttpPost]'被稱爲動作過濾器。還有其他的HTTP方法。 – juunas

+0

@Shyju我知道默認情況下它就像我使用[HttpGet] ...所以如果我不寫[HttpPost]會發生什麼?我喜歡這部分「這有助於框架從請求主體讀取數據並根據需要使用它(對於模型綁定等)」...我可以獲得更多信息嗎? – john

+0

就像我在答案中提到的那樣,當使用GET方法時,表單數據將在請求主體中發送到服務器,並在使用GET時作爲查詢字符串鍵值(您可以在瀏覽器url中看到)。服務器應該知道從哪裏讀取表單數據。 – Shyju