• 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

    如果是向数据库里提交数据,刷新页面极有可能就同时提交了两次相同的数据了。

  • 相关阅读:
    JavaScript创建对象及对象继承
    Shell基础学习小结
    深入理解Java反射
    STL"源码"剖析-重点知识总结
    Java IO工作机制分析
    优先队列原理与实现
    CleanBlog(个人博客+源码)
    线性时间排序
    深入理解FTP协议
    Spring学习之AOP总结帖
  • 原文地址:https://www.cnblogs.com/bianlan/p/2858254.html
Copyright © 2020-2023  润新知