ASP.NET中新的代碼編譯功能(二)

來源:互聯網
上載者:User
asp.net|編譯 利息計算機

首先,我們開啟 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").ToStringEnd 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="計算"  />    </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 Form頁時,除了 .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 Form添加到項目中,方法如下:右擊 Web 網站節點,然後單擊 Add New Item....(添加新項...)。在 Add New Item(添加新項)對話方塊中,選擇 Web Form,將頁面命名為 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"  />    </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 可以協助我們完成這一切。

相關文章

Cloud Intelligence Leading the Digital Future

Alibaba Cloud ACtivate Online Conference, Nov. 20th & 21st, 2019 (UTC+08)

Register Now >

Starter Package

SSD Cloud server and data transfer for only $2.50 a month

Get Started >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。