2010-03-16 14 views
4

我正在爲該網站開發第二語言支持。所以我做了重複的.ascx和現有ascx.cs和aspx.csVS2008中的許多ascx-to-one ascx.cs錯誤

大多數的一切正常的時候..但突然向我.aspx文件:

類型「ctrl_xxx」存在都在'c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ d072cc72 \ b9d5698b \ App_Web_xdmblegv.dll'中,並在'c:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \臨時ASP.NET文件\ d072cc72 \ b9d5698b \ App_Web_gkptrzo2.dll」(譯自俄文)

ctrl_xxx ctrl = (ctrl_xxx) LoadControl("xxx.ascx"); 

我有幾個這樣的代碼字符串...和其中一個發生同樣的錯誤。但這些文件沒有任何變化。爲了解決這個問題一段時間,我需要刪除解決方案和網站文件夾,並從SS重新獲得它們。也許解決方案存在問題?解決方案從vs2005轉換而來。

回答

3

您不應通過複製頁面或控件來本地化asp.net網站。例如,您使用在一個頁面或控件中引用的語言特定的資源文件。查看this,瞭解如何本地化asp.net網站。

+0

首先,我沒有時間更改所選方法。其次,由於某些原因,我不喜歡這種「官方」方式。 – 2010-03-16 12:18:07

+0

我不推薦它,因爲它是官方的,只是因爲它會起作用。 :)這是值得下去的資源文件路由,因爲它不是那麼慢... – 2010-03-16 12:20:52

+0

我使用「官方」只是作爲方法的標籤。你在談論什麼緩慢的問題? – 2010-03-16 12:32:30

2

我同意@Joe R,複製代碼不是本地化的好方法。你可能覺得你在這條道路上走得太遠了,無法改變你的方法,但從長遠來看,你會用不同的解決方案更快樂,更高效。

至少我會轉換到其他本地化的不同方法,完成項目,然後再回來並將已經完成的操作轉換爲新方法。

看看以下內容:

+0

沒有CODE的副本)一個cs文件的許多設計。這完全不是一個數據庫驅動的網站) – 2010-03-16 20:49:10

+0

@pukipuki - 瞧,你來這裏尋求建議,並得到它。無論你是否願意接受,這取決於你 - 不需要爲此爭論。 – 2010-03-16 22:21:46

+0

如果是這樣 - 爲什麼會有add_comment功能?) – 2010-03-16 23:30:06

1

如果您需要爲您的問題速戰速決,你需要給新的名字到所有的您複製的頁面和控件。錯誤來自兩個用戶控件具有相同的名稱(就像它說的)。

但是,其他人都是正確的,因爲你正在以這種錯誤的方式去做。當你需要改變一些代碼時會發生什麼?這將導致額外的維護,因爲您需要在兩個地方進行更改。更可能的是,你會忘記一個,最終你會浪費很多時間。如果您現在投資使用語言資源文件,那麼您將在以後節省頭痛。而且,我甚至沒有提到需要添加額外語言的可能性。

編輯

請嘗試以下,如果你還是不希望使用語言資源文件。

  1. 將非特定於語言的代碼放入單獨的.cs文件中。確保它從System.Web.UI.UserControl
  2. 繼承了ASCX 1,確保其ascx.cs類從在步驟1中
  3. 建立在ASCX 2你的類繼承,確保其ASCX。cs類繼承自您在第2步中創建的課程。
+0

錯誤來自錯誤。許多ascx到一個ascx.cs - 合格的方法.... – 2010-03-16 20:50:30

+0

好吧,我認爲我對情況更清楚。我從來沒有聽說過任何人在做你想做的事。 ASP.NET被設計爲每頁有一個代碼隱藏(.cs)類。如果需要,可以讓這些代碼隱藏類從另一個類繼承,但它是aspx文件和aspx.cs之間的一對一關係。如果你有一個例子,那就是某個人已經完成了你想要做的事情,不管怎樣,發佈它,我會立即糾正。 – 2010-03-16 22:45:46

+0

如果您仍想追求本地化方法,請參閱上面的編輯。 – 2010-03-16 23:01:32