今天学习了在一般处理程序中写一个计算器

                 今天看了看前面的javascript以及学习的jquery,感觉刚开始学习时间就赶得比较紧,练习是做啦,基础的知识都是知道的,但是在写一些小小的程序时间还是陌生,感觉练习的还是很不够的,其实怎么说那,想好好的学习还是把他们使用到项目中练习就会学习的更快些吧,然后我又做啦一个增删改查的一般处理程序,但是还没有总结好,现在就简单的先总结一个小小的计算器使用html和ashx来实现一下其功能,如下所示:

          一.html样式

<script>
       //@Script;
    </script>
<body>
    <form action="001.ashx" method="post">
        <table>
            <tr><td>第一个数字:</td> <td><input type="text" name="txtnum1" value="" id="num1"/></td></tr>
            <tr><td>计算符号: </td><td>
                    <select name="select">
                        <option value="+">+</option>
                        <option value="-">-</option>
                        <option value="*">*</option>
                        <option value="/">/</option>
                    </select></td></tr>
            <tr><td> 第二个数字: </td><td><input type="text" name="txtnum2" value="" id="num2"/></td></tr>
            <tr><td colspan="2"> <input type="submit" name="submit" value="等于" /></td></tr>
            <tr><td> 结果:</td><td><input type="text" name="resoult" value="0"  id="num"/></td></tr>
        </table>
    </form>
</body>

                   写上面的html主要是在这里想说一下使用form表单提交数据两个属性,action指的是操作的我们要指向的ashx页面的地址,而method指的是我们提交程序的方式,在这里我们仅仅学习了post和get两种提交方式,在这里get提交数据主要传参数在url地址栏内,而post的提交方式可以通过firebug来查看其传参,这里就提及到安全性的问题,get方式提交相对来说并没有post安全。

         二.ashx程序

public class _001 : IHttpHandler {

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/html";
        string method = context.Request.HttpMethod;    //判断请求的方式,在第一次请求时间为get请求,在submit提交后的请求为post请求,则method为post请求
        if (method == "GET")
        {
            string path = context.Request.MapPath("0001.html");   //html页面文档
            string html = File.ReadAllText(path);       //读取文件路径
            context.Response.Write(html);
        }
        else
        { 
            string num1 = context.Request.Form["txtnum1"];         //获取文本框的值
            string num2 = context.Request.Form["txtnum2"];
            string select = context.Request.Form["select"];         //select中获取其值是通过获取其name而得到value
            int resoult = 0;
            if (!string.IsNullOrEmpty(num1) && !string.IsNullOrEmpty(num2))   
            {
                switch (select)
                {
                    case "+": resoult = int.Parse(num1) + int.Parse(num2);
                        break;
                    case "-": resoult = int.Parse(num1) - int.Parse(num2);
                        break;
                    case "*": resoult = int.Parse(num1) * int.Parse(num2);
                        break;
                    default: if(!num2.Equals(0))
                        {   
                            resoult = int.Parse(num1) / int.Parse(num2);
                        }
                        break;
                }
                string path = context.Request.MapPath("0001.html");
                string html = File.ReadAllText(path);
                //把js写到ashx中替换,也可以在html中写js,然后@一个变量再在ashx中替换
                html += html.Replace("@num",resoult.ToString());
                html += html.Replace("@num1", num1.ToString());
                html += html.Replace("@num2", num2.ToString());
                
                //html = html.Replace("@Script;", "window.onload=function(){ document.getElementById('num').value =" + resoult + "; document.getElementById('num1').value =" + num1 + ";document.getElementById('num2').value =" + num2 + "; };");
                
                //html = html.Replace("0", resoult.ToString());     //第一种可以直接替换字符串
                context.Response.Write(html);
            }
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}

                     

            在这里使用的一段javascript代码主要是想实现党页面重新请求时间我们的第一个数和第二个数能够仍然在文本框中显示,在一般处理程序中并不像winform中一样,因为每次点击按钮一个即提交页面就进行一个刷新并提交数据,因此,我们如果不进行处理,那么当我们点击按钮使其呈现结果的时间我们的第一个文本框和第二文本框都为空,仅存在结果的文本框中呈现结果,如果我们要想像winfom中那样,就需要使用js改变。如上所示。
            好啦,今天就写到这里吧,嘿嘿,明天再继续总结我的增删改查一般处理程序。

posted @ 2015-01-21 00:43  雪?  阅读(1013)  评论(9编辑  收藏  举报