黑马程序员_学习日记74_727ASP.NET(模拟Session、jsValidate异步验证表单、AjaxForm异步提交表单)

一、复习Cookie、Session、Application、ViewState等
Cookie是存在浏览器端硬盘或内存中的。浏览器记住用户名密码不是Cookie。
Cookie有Domain的限制:主域的Cookie所有子域和主域都能访问,子域的Cookie只有子域才能访问。如果要让主域访问子域的cookie,得在子域的cookie上设置domain为主域。


Session存在服务器端内存里,让每个浏览器记住一个aspnet_sessionId。如果在webconfig中禁用cookie存sessionId,sessionId将存在Url地址中(http://loaclhost/(sss)/a.aspx)。还可以通过配置将session放在进程外,如:另一个机器或数据库中。
如果客户端禁用cookie,而服务器端webconfig中没有禁用,则浏览器每次请求都是新的会话。
Session应用场景:验证码、登录。


Application:存储在服务器端的内存中,尽量不要往里面放东西,公共性的东西放在这里。
ViewState实现原理:隐藏域。
页面间传值的方式:
隐藏域、viewstate、表单控件、QueryString、session、Application、cookie…


二、模拟session
/// <summary>
///MySession 的摘要说明
///TODO:如何实现session延时删除?在SessionManager类里面添加一个属性SetTimeOut即超时时间,在Global.asax.cs文件的Application_Start事件里面去配置这个SetTimeOut值,并在每次请求的时候记录下最后一次请求的时间,在SessionManager里面使使用Timer进行控制。就可以达到Session的功能!
/// </summary>
public class MySession
{
    //外字典的键是sessionID,值(内字典)是session
    private static IDictionary<string, IDictionary<string, object>> data = new Dictionary<string, IDictionary<string, object>>();
    public static IDictionary<string, object> GetSession(string sessionID)
    {
        if (data.ContainsKey(sessionID))
        {
            return data[sessionID];
        }
        else
        {
            IDictionary<string, object> session = new Dictionary<string, object>();
            data[sessionID] = session;
            return session;
        }
    }
}

三、jsValidate异步验证表单、AjaxForm异步提交表单
<script src="Scripts/jquery.validate.js" type="text/javascript"></script>
<script src="Scripts/MyAjaxForm.js" type="text/javascript"></script>
<script type="text/javascript">
    $(function () {
        validateFrm(); //表单校验
        submitFrm(); //提交表单
    });


    //校验整个表单
    function validateFrm() {
        $("#frmSubmit").validate({
            rules: {
                txtUName: {
                    remote: "CheckUNameIsExist.ashx", //要用到数据库资源,所以remote到Handler
                    required: true,
                    minlength: 4
                },
                txtPwd: {
                    required: true,
                    rangelength: [5, 15]
                },
                txtPwd2: {
                    equalTo: "#txtPwd"
                }
            },
            messages: {
                txtUName: {
                    required: "必填",
                    minlength: "至少4个字符",
                    remote: "用户名已存在"
                },
                txtPwd: {
                    required: "必填",
                    rangelength: "长度为5-15个字符"
                },
                txtPwd2: "两次密码不一致"
            }
        });
    }


    //提交表单
    function submitFrm() {
        $("#btnSub").click(function () {
            $("#frmSubmit").ajaxSubmit({
                success: function (str) {
                    if (str == 'ok') {
                        window.location = "Login.htm";
                    }
                    else {
                        alert("注册失败!");
                    }
                },
                error: function (error) { alert(error); },
                url: "Regist.ashx",
                type: "post"
            });
        });
    }
</script>

小知识:
1、分页存储过程有输出参数,reader读完再取out参数,一般有输出参数时通过dateTable读取。
2、改时间格式:
eval(jsonRow.SubTime.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"))
eval(value.replace(/\/Date\((\d+)\+\d{4}\)\//gi, "new Date($1)"))).pattern("yyyy-M-d h:m:s")
3、    //序列化一个类
        string str = javaScriptSerializer.Serialize(objData);
        //反序列化
        var demo = javaScriptSerializer.Deserialize<NikClass>(str);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值