今天學習了在一般處理程序中寫一個計算器


                 今天看了看前面的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改變。如上所示。
            好啦,今天就寫到這里吧,嘿嘿,明天再繼續總結我的增刪改查一般處理程序。


免責聲明!

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



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