2012年5月27日 星期日

ASP.NET 判斷瀏覽器是否為IE


  以下是判斷瀏覽器是否為IE...

程式碼如下:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim hbc As HttpBrowserCapabilities = Request.Browser
        Response.Write("瀏覽程式種類: " & hbc.Type & "<br/>") '假如是IE版本為8就會顯示IE8
        Response.Write("瀏覽程式名稱: " & hbc.Browser & "<br/>") '假如是IE就顯示IE
        'IndexOf字串搜尋,假如有找到IE就會>-1,否則等於-1
        If hbc.Browser.ToUpper().IndexOf("IE") >= 0 Then
            Response.Write("瀏覽器是IE瀏覽器" & "<br/>")
        Else
            Response.Write("瀏覽器為" & hbc.Browser & "<br/>")
        End If
        Response.Write("版本: " & hbc.Version & "<br/>")
        Response.Write("主版本: " & hbc.MajorVersion & "<br/>")
        Response.Write("次版本: " & hbc.MinorVersion & "<br/>")
        Response.Write("平台: " & hbc.Platform & "<br/>")
        Response.Write("支援框架: " & hbc.Frames & "<br/>")
        Response.Write("支援表格: " & hbc.Tables & "<br/>")
        Response.Write("支援Cookies: " & hbc.Cookies & "<br/>")
        Response.Write("支援VBScript: " & hbc.VBScript & "<br/>")
        Response.Write("支援Java Applets: " & hbc.JavaApplets & "<br/>")
        Response.Write("支援ActiveX控制項: " & hbc.ActiveXControls & "<br/>")
 End Sub

執行結果如下:

參考:
http://blog.blueshop.com.tw/kenqpqp/archive/2006/03/29/20517.aspx
http://msdn.microsoft.com/zh-tw/library/system.web.configuration.httpcapabilitiesbase.browser(v=vs.90).aspx#Y500

2012年5月26日 星期六

ASP.NET 實作AJAX Control 會員登入


此篇大概講解怎麼透過JavaScriptASP.NET Web Services來傳遞資料,判斷是否有資料存在,而Ajax控制項的設定請自行設定摸索。
P.S說明已寫在程式碼註解中,只要您懂一點點JavaScript應該看得懂此篇的程式碼


Default.aspx 如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .SPBackground
        {
            border: 1px solid #2F4F4F;
            color: white;
            background-color: #000000;
            font-weight: bold;
            cursor: not-allowed;
            filter: Alpha(opacity=35);
        }
        .Login_P
        {
            margin-top: 5px;
            margin-bottom: 5px;
        }
    </style>
    <script type="text/javascript">
<!--
        function Call_Login(Acc, Pass) {
        //當執行完WebServices的Login函式時,將回傳值再傳給javascript的Check_Login函式
            TWS.Login(Acc, Pass, Check_Login);
        }
 -->
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <ajaxToolkit:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </ajaxToolkit:ToolkitScriptManager>
        <ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender1" runat="server" 
        TargetControlID="LB_Login" CancelControlID="B_Canceled" 
        PopupDragHandleControlID="LBL_Title" 
        PopupControlID="Login_Panel" BackgroundCssClass="SPBackground" 
        DropShadow="True">
        </ajaxToolkit:ModalPopupExtender>
    <asp:LinkButton ID="LB_Login" runat="server" CausesValidation="False" >登入</asp:LinkButton><br />
    </div>
        <asp:Panel ID="Login_Panel" runat="server" ScrollBars="Auto" BackColor="WhiteSmoke" style="display: none" BorderColor="#0000C0" BorderStyle="Solid" BorderWidth="1px" HorizontalAlign="Center">
        <table cellpadding="0" cellspacing="0" width="210px">
            <tr>
                <td colspan="2">
                    <span style="color: #ffffff">
                    </span>
                    <asp:Label ID="LBL_Title" runat="server" BackColor="Blue" Font-Bold="True" ForeColor="White" Style="text-align: left" Text="登入" Width="100%"></asp:Label>
                </td>
            </tr>
            <tr>
                <td width="50px">
                    <p class="Login_P">
                        帳號:</p>
                </td>
                <td align="left">
                    <p class="Login_P">
                    <asp:TextBox ID="TB_A" runat="server" Width="150px"></asp:TextBox>
                    </p>
                </td>
            </tr>
            <tr>
                <td width="50px">
                  <p class="Login_P">
                    密碼:
                  </p>
                </td>
                <td align="left">
                  <p class="Login_P">
                    <asp:TextBox ID="TB_P" runat="server" TextMode="Password" Width="150px"></asp:TextBox>
                  </p>
                </td>
            </tr>
            <tr>
                <td width="50px">
                </td>
                <td align="right">
                    <input id="B_Login" type="button" runat="server" value="登入" />
                    &nbsp;
                    <input id="B_Canceled" type="button" runat="server" value="取消" />
                    &nbsp;
                </td>
            </tr>
        </table>
    </asp:Panel>
    </form>
</body>
</html>


Default.aspx.vb 如下:

Imports System.Text '為了使用StringBuilder
Partial Class _Default
    Inherits System.Web.UI.Page


    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim js As New StringBuilder


        js.Append("function Check_Login(CheckData) {")
        js.Append("switch (CheckData) {")
        js.Append("case 0:")
        js.Append("alert('帳號密碼錯誤!!');break;")
        js.Append("case 1:")
        js.Append("$get('" & B_Login.ClientID & "').disabled=true;") '當登入成功時,透過javascript將登入按鈕設為不啟用
        js.Append("alert('歡迎登入!!');")
        js.Append("window.location.reload();break;")
        js.Append("}}")


        If Not Page.IsPostBack Then
            '在B_Login按鈕中加入onclick,並將呼叫javascript的Call_Login函式,而$get等同於document.getElementById("TextBox1")
            '因為有ScriptManager的關係才可以用$get簡化寫法
            B_Login.Attributes("onclick") = "Call_Login($get('" & TB_A.ClientID & "').value,$get('" & TB_P.ClientID & "').value);"
        End If
        'ScriptManager.RegisterClientScriptBlock會再Html中插入javascript
        ScriptManager.RegisterClientScriptBlock(Me, Me.GetType(), "", js.ToString, True) 
        '以下這行必須加入,否則無法在前端使用 TWS.Login
        Me.ToolkitScriptManager1.Services.Add(New System.Web.UI.ServiceReference("TWS.asmx"))
    End Sub
End Class

Step 1.在專案中按右鍵→加入新項目→點選:Web服務→加入

TWS.asmx 如下:


然後請執行看看結果,帳號為123、密碼為456

ASP.NET使用AJAX Control Toolkit前相關設定


在開發ASP.NET網頁程式設計時,想使用更多AJAX Control必須將專案作些設定,但前提是必須將AjaxControlToolkit.dll加入參考到自己的專案中,再作 .NET Framework 版本的設定及web.config的設定。
Step 1.方案總管→在專案上按右鍵→加入參考→AjaxControlToolkit.dll→確定,之後再方案總管中就會看到Bin資料夾,展開後就會看到AjaxControlToolkit.dll,就代表你已經將ajax dll檔引用進來了。
P.S我使用的AjaxControlToolkit版本是3.5,看您自己是使用哪一個版本
Step 2.方案總管→在專案上按右鍵→屬性頁→建置,將目前.NET Framework 2.0 設定為 .NET Framework 3.5→確定
P.S如果您的AjaxControlToolkit版本是其他版本,那您的.NET Framework也要跟著作設定

Step 3.接著設定專案中的web.config檔,請先找到<controls></controls>並加入為以下這行
<controls>
………………………..
    <!--請加入以下這行,這行意思是在使用Ajax控制項時,它的標籤名稱為ajaxToolkit -->
    <add tagPrefix="ajaxToolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" />
………………………..
</controls>


Step 4.接著就可以在ASP.NET網頁上加入Ajax控制項

以上就是AJAX Control Toolkit的相關設定