2013-03-07 69 views
0

我已經開發了一個網站,在首頁和控制面板也有CRUD功能。我發現在嘗試連接和CRUD時,我已經爲每個頁面編寫了相同的代碼。避免在每個頁面重複的代碼asp.net c#

我沒有足夠的時間研究如何優化我的代碼,並且我剛寫下了我所需要的。我也受苦了。但我沒有別的機會。

例如:

我有一個數據庫,當然我需要一個連接字符串。我需要將記錄讀入頁面(比方說)blogs.aspx。 在另一頁news.aspx我需要再次建立一個新連接,並創建一個新的Sqlconnection實例。

正如我所說,我現在有超過40頁,並有很多重複數據庫連接,datagridview填充代碼。

我的問題:

  1. 難道是定義連接的母版頁(的Site.Master),數據表,DataAdapter的,命令情況的好辦法?或者封裝概念禁止我?

  2. 如果我寫了一個名爲konnekt.cs的類,我該如何將它的對象繼承到我的當前頁面?換句話說,我怎麼能從當前頁面擴展到konnekt.cs?

也許我會得到反對票,但我認爲這個風險值得學習這些概念。 我是c#和其他編程語言的新手。

感謝您的提示。

+0

是什麼 「的問題符合在2天內賞金」?我做錯了什麼? – zkanoca 2013-03-07 20:17:40

+1

沒有賞金可以讓你花一些代表來更快地得到答案。回答它的人會獲得額外的「賞金」作爲獎勵。 – 2013-03-07 20:18:54

+0

沒有重複的代碼是好的。但是決定什麼對你的特殊情況更好需要由你來完成......雙方都做出改變 - 比恢復你不喜歡的另一種方式。 – 2013-03-07 20:19:55

回答

0

您可以在其他類中定義這些方法,並從後面的代碼中調用它們。或在一個共同的基類

2,你必須繼承頁確定它們中的一些,然後你可以創建自己的基類

5

你需要做的是學習「的關注點分離」的概念。這基本上意味着你根據它的作用劃分你的代碼。現在(根據我的理解),所有的代碼都在同一個地方。這個,就像你注意到的,是不是好東西。確定它現在可行,但只要您需要進行修改,就會遇到問題。

最基本的是,您需要分離處理數據庫中數據的代碼(通常稱爲數據訪問層)和顯示該數據的代碼(表示層)。當一個頁面(表示層)被加載時,它會調用數據訪問層以從中獲取數據(該頁面不直接調用數據庫),等等。通常,這兩者之間有第三層稱爲具有業務規則邏輯的業務層。

它會是一個很好的方式來定義主頁(Site.Master)中的連接,DataTable,DataAdapter,Command實例嗎?或者封裝概念禁止我?

這不是一個好主意。母版頁屬於演示文稿,因此將所有直接調用數據庫的東西都放在那裏是不行的。

如果我寫了一個名爲konnekt.cs的類,我該如何將它的對象繼承到我當前的頁面?換句話說,我怎麼能從當前頁面擴展到konnekt.cs?

再次,不要直接從您的頁面調用數據庫。構建另一個連接到數據庫的類,並讓頁面調用類。

0

System Down一樣,我的建議是丟棄頁面代碼中的db代碼..使用App_Code文件夾。

在一個頁面文件代碼中,你必須編寫方法/屬性/ etc來完成頁面工作,而不是db工作。

對於一般的網頁代碼,你可以把它放在一個C#文件(總是在App_Code文件),通過擴展System.Web.UI.Page

例App_Code文件/ PageBase.cs:

public class PageBase : System.Web.UI.Page 
{ 
    // common code 
} 

例Default.aspx.cs:

public partial class _Default : PageBase // instead of System.Web.UI.Page 
{ 

}