摘要:讀者 Tsai 的問題
原發問問題:
在拜讀此書第3章時,我嘗試自己建一個網站目錄ch3,並在App_Data中加入 "北風貿易.mdf" 這個資料庫檔,目前在測試時遇到以下問題:
1. 在CH3_DemoForm008.aspx/CH3_DemoForm009.aspx中當以{部門編碼(此為中文)}傳遞至DisplayPieChart.ashx與DisplayGenderPieChart.ashx時,將不會顯示圖形。我發現是因為傳入DisplayPieChart.ashx與DisplayGenderPieChart.ashx的部門編碼參數變為亂碼,這問題我在web.config檔中加入就可以解決。
2. 經過上述的修改後,在CH3_DemoForm011.aspx時,我嘗試去編輯某筆記錄,要更新時會產生以下的訊息:
A. enableEventValidation="true"的錯誤訊息,我在<% Page> 中加入EnableEventValidation="false"即可成功編輯並更新。
B. 相同的問題也會出現在插入時。
問題在於如果經過上述的動作後編輯或新增過的資料在顯示將會變成亂碼。
我想請問
感恩喔~~~
回答
親愛的讀者您好,很感謝您對於章立民研究室的支持,有關於您提到的問題,回覆如下。
圖表 1 到圖表 3 所示者依序是網頁範例 CH3_DemoForm008.aspx、CH3_DemoForm009.aspx 以及 CH3_DemoForm011.aspx 的執行畫面,上述網頁範例所存取的北風貿易資料庫並沒有附加至 SQL Server Express 或 SQL Server 上,而是依您所需,以檔案的形式存放於網站專案的 App_Data 目錄內。
重點在於,如果要將北風貿易資料庫存放於 App_Data 目錄內,您務必如下所示修改 Web.Config 檔案的內容,以便建立正確的資料庫連結:
<add name="chtNorthwind" connectionString="Data Source=(local)SQLEXPRESS;
AttachDbFileName=|DataDirectory|北風貿易.mdf;Integrated Security=True;
User Instance=true;"
providerName="System.Data.SqlClient" />
</connectionStrings>
此外,您還必須如下所示修改 DisplayPieChart.ashx 與 ChartSupplier.vb 的內容,使之採用正確的資料庫連結:
' 利用SqlConnectionStringBuilder 物件來構建連接字串。
Dim connectStringBuilder As New SqlConnectionStringBuilder()
connectStringBuilder.DataSource = "(local)SQLEXPRESS"
' 將SQL Server 資料庫檔的相對路徑指派給 AttachDBFilename 屬性。
connectStringBuilder.AttachDBFilename = "|DataDirectory|北風貿易.mdf"
connectStringBuilder.IntegratedSecurity = True
' 只連結資料庫而不附加資料庫。
connectStringBuilder.UserInstance = True
最後,衷心建議大家在使用本書的範例網頁時,還是應該先遵照附錄說明,利用BuildDemo.bat 將「北風貿易」資料庫附加至 SQL Express 執行個體上,以避免另行設定資料庫連接字串的問題。
圖表1
圖表2
圖表3