利息計算器
首先,我們打開 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 可以幫助我們完成這一切。
|
|