MVC3區分Get和Post


1、Get方法是用來向服務器上獲取數據,而Post是用來向服務器上傳遞修改數據。

2、Get將表單里的數據添加到action所指向的URL后面,並且兩者之間使用”?”連接,而各個變量之間使用”&”連接;Post是將表單中的數據放在form的數據體中,按照變量和值對象的方式,傳遞到所指向的action.

3、Get是不安全的,因為在傳輸過程中,數據被放在請求的Url中,這樣,用戶可以直接在瀏覽器上看到提交的數據,一些系統內部信息也一同顯示在用戶面前。Post的所有操作對用戶來說都是不可見的。

4、Get傳輸的數據量小,主要是受限與於Url長度限制,其中IE瀏覽器對URL的最大限度為2083個字符(http://hqlong.com/2009/12/1164.html)。 而post可以的傳輸大量的數據,所以在上傳文件和大數據量時使用post。

5、Form提交默認為Get方法提交。

6、Get方式獲取數據后,刷新不會有負面的影響,因為它只是獲取數據,而Post方法刷洗頁面重復提交可能會產生不良的后果。

具體使用如下代碼:

Home/Index.cshtml:
<form action="/Home/Search" method="get">

Album's Name:êo<input  type="text" name="query"/>
<br />
<input  type="submit" value="Seach"/>
</form>

Home/Search方法:
public ActionResult Search(string query)
        {
            //Contains類似like查詢
            //查詢Title==query
            //var albums = storeDB.Albums.Include(a => a.Artist).Include(a => a.Genre).Single(a => a.Title==query || query == null);
            //查詢Title包含query的集合
            //var albums = storeDB.Albums.Include(a => a.Artist).Include(a => a.Genre).Where(a => a.Title.Contains(query) || query == null);
            //查詢Title包含query並且按AlbumId升序排列的前2個的集合
            //var albums = storeDB.Albums.Include(a => a.Artist).Include(a => a.Genre).Where(a => a.Title.Contains(query) || query == null).OrderBy(a=>a.AlbumId).Take(2);
            var albums = storeDB.Albums.Include(a => a.Artist).Include(a => a.Genre).Where(a => a.Title.Contains(query) || query == null).OrderByDescending(a => a.AlbumId).Take(2);
            return View(albums);
        }

Home/ Search.cshtml頁面用於展示查詢到的信息,代碼略。

運行效果圖如下:

clip_image002

clip_image001

我們可以看到form的參數是直接顯示到url后面的。

而如果使用post方法,如:

<form action="/Home/Search" method="post">

Album's Name: <input  type="text" name="query"/>
<br />
<input  type="submit" value="Seach"/>
</form>

運行效果圖:

clip_image001[4]

這里form表單數據是沒有體現在url參數上面的。而此時我們刷新頁面,會看到:

clip_image002

如果是向數據庫里提交數據,刷新頁面極有可能就同時提交了兩次相同的數據了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM