WebMatrix学习之初体验(二)

来源:luqidong 发布时间:2013-08-21 21:07:59 点击数:

先来看下HTTP请求,很多学.net的人都不太了解,就知道拖控件不解释:

78OA办公系统

下面在看下URL各个参数:

78OA办公系统

看图我不解释了。

在下面看下post与get的简单区别:

 

  • GET是从服务器上获取数据,POST是向服务器传送数据。
  • GET是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。POST是通过HTTP POST机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  • 对于GET方式,服务器端用Request.QueryString获取变量的值,对于POST方式,服务器端用Request.Form获取提交的数据。
  • GET传送的数据量较小,不能大于2KB(这主要是因为受URL长度限制)。POST传送的数据量较大,一般被默认为不受限制。但理论上,限制取决于服务器的处理能力。
  • GET安全性较低,POST安全性较高。因为GET在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。POST的所有操作对用户来说都是不可见的。

在FORM提交的时候,如果不指定Method,则默认为GET请求(.net默认是POST),Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+”号,其它符号转换为%XX,其中XX为该符号以16进制表示的ASCII(或ISO Latin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;GET方式提交的数据最多只能有2048字节,而POST则没有此限制。POST传递的参数在doc里,也就http协议所传递的文本,接受时再解析参数部分。获得参数。一般用POST比较好。POST提交数据是隐式的,GET是通过在url里面传递的,用来传递一些不需要保密的数据,GET是通过在URL里传递参数,POST不是。

说明:关于“POST与GET的差异”查考了网上前辈的资料,由于找不出源头,到处都是转帖,这里就不贴出相关网址了,baidu或Google下就知道了

如果你只知道post与get这2种请求方式,那么下面就请颤抖吧~~~随着Ajax XMLHttpRequest 和 REST风格应用的深入。HTTP还支持下面的请求方式:

  • HEAD
  • DELETE
  • PUT
  • TRACE
  • CONNECT 
但是。。我们基本用不到。这些都是在人人 facebook 微博上用的比较多。如果感兴趣可以google下~。反正也没人看我写它干嘛

初体验(二)就是做个留言板小程序,没用数据库:

我直接上代码:

Comment.cs类

using System;

using System.Collections.Generic;

using System.Web;

/// <summary>

/// Summary description for ClassName

/// </summary>

public class Comment

{

    public Comment()

    {

        //

        // TODO: Add constructor logic here

        //

    }

    public Guid Id { setget; }

    public string Username { setget; }

    public string Content { setget; }

    public DateTime CreatedTime { setget; }

    public Guid? ParentID { setget; }

}

 

Index.cshtml代码:

@{

    if (IsPost)

    {

        var content = Request.Form["content"];

        var username = Request.Form["username"];

        var comment = new Comment

        {

            Content = content,

            Username = username,

            CreatedTime = DateTime.Now.AddDays(-2),

            Id = Guid.NewGuid()

        };

        if (Request.Form["parentid"] != "")

        {

            comment.ParentID = new Guid(Request.Form["parentid"]);

        }

        var list = Context.Application["list"as List<Comment>;

        if (list == null)

        {

            list = new List<Comment>();

            Context.Application["list"] = list;

        }

        list.Add(comment);

        Response.Redirect("Index.cshtml");

    }

}

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="utf-8" />

    <title></title>

</head>

<body>

    <ul>

    @{

        var allList = Context.Application["list"as List<Comment> ?? new List<Comment>();

        }

        @foreach (var item in allList.Where(c=>!c.ParentID.HasValue))

        {

            <li>内容:@item.Content<br />

                发布人:@item.Username @@ @item.CreatedTime.ToString("MM:dd HH:mm:ss")<br />

                <a href="?id=@item.Id">回复</a> 

                <ul>

                 @foreach (var subitem in allList.Where(c => c.ParentID == item.Id)) 

                 {

                     <li>@subitem.Content|@subitem.Username</li>

                 }

                </ul>

                </li>

        }

    </ul>

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

    <input type="hidden" name="parentid" value="@Request.QueryString["id"]" />

    <label>

        内容</label>

    <textarea name="content"></textarea><br />

    <label>

        用户名</label>

    <input type="text" name="username" />

    <input type="submit" value="提交" />

    </form>

</body>

</html>