當前位置:開發者網絡 >> 技術教程 >> .NET教程 >> Asp.Net開發 >> 內容
精彩推薦
分類最新教程
分類熱點教程
    
ASP.NET中新的代碼編譯功能(二)
作者:未知
日期:2005-04-28
人氣:
投稿:(轉貼)
來源:未知
字體:
收藏:加入瀏覽器收藏
以下正文:
利息計算器

首先,我們打開 Visual Studio .NET Whidbey,創建一個名為 Compilation 的新 Web 站點。創建 Web 站點之後,IDE 應與圖 1 類似。



圖 1:Visual Studio .NET Whidbey Web 站點


然後,我們將 \Code 文件夾添加到該 Web 站點,添加方法為右擊該項目,然後選擇 New Folder(新建文件夾)。此文件夾必須命名為 Code,但名稱不區分大小寫。添加文件夾後,我們可以添加一個新的類文件:右擊 \Code 文件夾,單擊 Add New Item...(添加新項...),然後在 Add New Item(添加新項)對話框的 Templates(模板)窗格中選擇 Class(類)項。將類命名為 CalculateInterest.vb。然後添加用於計算利息的代碼(將其添加到 Class 和 End Class 語句之間):

Public Function CalcBalance(ByVal Prncpl As Integer, _
                        ByVal Rate As Double, _
                        ByVal Years As Integer, _
                        ByVal Period As Integer) As String
    Dim BaseNum As Double = (1 + Rate / Period)
    CalcBalance = _
        Format(Prncpl * System.Math.Pow(BaseNum, _
        (Years * Period)), "#,###,##0.00").ToString
End Function


創建組件類後,我們需要修改 Default.aspx 頁面以提供用來輸入數據的字段,還需要調用組件的 CalcBalance 方法。為了簡單起見,Default.aspx 的完整列表顯示如下(請注意,Default.aspx 使用單文件代碼模型)。

Default.aspx:

<%@ page language="VB" %>

<script runat="server">    
    Sub Button1_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs)
        Dim Calc As New CalculateInterest
        Label6.Text = "$" & _
            Calc.CalcBalance(Convert.ToInt32(TextBox1.Text), _
                (Convert.ToInt32(TextBox2.Text) / 100), _
                Convert.ToInt32(TextBox3.Text), _
                Convert.ToInt16(Dropdownlist1.SelectedValue))
        Label6.Visible = True
    End Sub
</script>

<html>
<head runat="server">
    <title> 利息計算器</title>
</head>
<body>
    <form runat="server">
        <asp:label id="Label1" 
            runat="server">P本金 ($):</asp:label>
        <asp:textbox id="TextBox1" runat="server">
        </asp:textbox>
        <br />
        <asp:label id="Label2" 
            runat="server">利率 (%):</asp:label>
        <asp:textbox id="TextBox2" runat="server">
        </asp:textbox>
        <br />
        <asp:label id="Label3" runat="server">年數:</asp:label>
        <asp:textbox id="TextBox3" runat="server">
        </asp:textbox>
        <br />
        <asp:label id="Label4" 
            runat="server">復利頻率:</asp:label>
        <asp:dropdownlist id="Dropdownlist1" runat="server">
            <asp:ListItem Value="1">每年</asp:ListItem>
            <asp:ListItem Value="4">每季</asp:ListItem>
            <asp:ListItem Value="12">每月</asp:ListItem>
            <asp:ListItem Value="365">每日</asp:ListItem>
        </asp:dropdownlist>
        <br />
        <asp:label id="Label5" 
            runat="server">結餘: </asp:label>
        <asp:label id="Label6" 
            visible="false" runat="server"></asp:label>
        <br />
        <asp:button id="Button1" 
            runat="server" text="計算" onclick="Button1_Click" />
    </form>
</body>
</html>


在設計視圖中,修改後的 Default.aspx 應與圖 2 類似。



圖 2:設計視圖中的 Default.aspx


需要注意是,當您在用於調用組件類的 <腳本> 塊中鍵入代碼時,將獲得完整的 IntelliSense 語句完成(包括組件類),如圖 3 所示。這是在 Visual Studio .NET 2003 基礎上的一大改進,Visual Studio .NET 2003 不支持服務器端 <腳本> 塊中的 IntelliSense。



圖 3:源視圖中的 IntelliSense


瀏覽 Default.aspx 會生成圖 4 中所示的輸出。填入本金、利率和年數,然後單擊 Calculate(計算),輸出結果應與圖 5 類似。



圖 4:Default.aspx 的初始輸出




圖 5:計算後的輸出


資源文件 如果您以前在 Visual Studio .NET 2002 或 2003 中使用過 Web 應用程序,您一定已經注意到每次創建新 Web 窗體頁時,除了 .aspx 頁以及 .vb 或 .cs 模塊化文件之外,Visual Studio 還會創建一個具有 .resx 擴展名的匹配文件(即 WebForm1.aspx.resx)。與大多數 Web 開發人員一樣,您可能也會忽略或試圖刪除這些文件,因為它們的用途和/或用法並不是很直觀。簡言之,這些 .resx 文件稱為「資源文件」,主要用於存儲各個版本的資源,例如用於本地化的不同語言的文本字符串。

在 Visual Studio .NET 2002 和 2003 中,資源文件需要作為生成項目進程的一部分添加到項目程序集中,並且需要導入兩個命名空間,創建一個 ResourceManager 對象,並調用其 GetString 方法以訪問資源字符串。在 \Code 目錄的幫助下,Visual Studio .NET Whidbey 中的資源訪問過程變得非常簡單,如下面的示例所示。

我們先從創建資源文件開始,還是使用上一個示例中的項目。首先,右擊剛才創建的 Compilation Web 站點,然後單擊 Add New Item...(添加新項...)。在 Add New Item(添加新項)對話框中,選擇 Assembly Resource File(程序集資源文件)模板,將資源文件命名為 strings.resx,然後單擊 Open(打開)。strings.resx 文件的默認視圖應與圖 6 類似。



圖 6:在 XML 編輯器中編輯資源文件


將以下項添加到數據表中(可以將「comment」(註釋)、「type」(類型)和「mimetype」(MIME 類型)列保留為空):

名稱
txtColorPrompt 請選擇一種顏色:
txtColorResponseGreen 您選擇了綠色!
txtColorResponseBlue 您選擇了藍色!
txtColorResponseRed 您選擇了紅色!


現在重複上述過程,添加一個名為 strings.en-GB.resx 的新資源文件,並將以下項添加到其數據表中,然後保存文件(因為我們沒有添加 txtColorResponse* 的項,所以所有客戶機都將使用 strings.resx 中的這些項的值):

名稱
txtColorPrompt 請選擇一種顏色:


現在,為了充分利用 Code 目錄的神奇作用,我們需要將這兩個 .resx 文件從 Web 站點的根目錄拖到 Code 目錄中。完成上述操作後,將得到類似圖 7 的結果。



圖 7:Code 目錄中的 .resx 文件


為了說明現在使用創建的資源文件是多麼簡單,我們將一個 Web 窗體添加到項目中,方法如下:右擊 Web 站點節點,然後單擊 Add New Item....(添加新項...)。在 Add New Item(添加新項)對話框中,選擇 Web 窗體,將頁面命名為 ColorPicker.aspx,然後單擊 Open(打開)。修改此頁面,使其與以下列表匹配。

ColorPicker.aspx:

<%@ page UICulture="en-GB" language="VB" %>

<script runat="server">

    
    Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Label1.Text = Resources.strings.txtColorPrompt
    End Sub
    
    Sub Submit_Click(ByVal sender As Object, _
        ByVal e As System.EventArgs)
        Label1.ForeColor = _
            System.Drawing.Color.FromName(Dropdownlist1.SelectedValue)
        Select Case Dropdownlist1.SelectedValue
            Case "紅色"
                Label1.Text = Resources.strings.txtColorResponseRed
            Case "綠色"
                Label1.Text = Resources.strings.txtColorResponseGreen
            Case "藍色"
                Label1.Text = Resources.strings.txtColorResponseBlue
        End Select
        Dropdownlist1.Visible = False
        Submit.Visible = False
    End Sub
</script>

<html>
<head runat="server">
    <title>顏色選取器</title>
</head>
<body>
    <form runat="server">
        <asp:label id="Label1" runat="server">Label</asp:label>
        <asp:dropdownlist id="Dropdownlist1" runat="server">
            <asp:listitem value="Red">紅色</asp:listitem>
            <asp:listitem value="Green">綠色</asp:listitem>
            <asp:listitem value="Blue">藍色</asp:listitem>
        </asp:dropdownlist>
        <asp:button id="Submit" 
            text="提交" runat="Server" onclick="Submit_Click" />
    </form>
</body>
</html>


當從瀏覽器中瀏覽 ColorPicker.aspx 時,默認輸出與圖 8 類似。如果從為英國用戶設置的系統中瀏覽此頁面(您可以通過將頁面的 UICulture 屬性設置為「en-GB」並保存頁面來模擬此情形),輸出將與圖 9 類似(請注意,我們已經在「colour」中添加了 u)。



圖 8:ColorPicker.aspx 的默認輸出




圖 9:英國系統的 ColorPicker.aspx 輸出


請注意,在 ASP.NET Whidbey 中訪問資源文件只需要一行代碼。因為將資源文件放到 Code 目錄中後,即可自動嵌入和引用該資源文件,所以不需要引用任何命名空間或程序集,也不需要為訪問資源字符串創建對象。而且 ASP.NET 還可以確定應該使用哪個資源文件(基於用戶瀏覽器的設置),因此我們不需要在運行時對此進行判斷並作出相應的響應。ASP.NET 可以幫助我們完成這一切。
相關文章: