2009-04-10 31 views
0

我的項目經歷了名稱更改,導致使用ReSharper在整個解決方案中更改名稱空間的名稱。一切都編譯得很好,但我的ASP.NET MVC視圖不再看到任何繼承類。我更改了web.config中的命名空間導入以及所有內容,並且我確信這些類存在。如果我引用完全限定的類名(Name.Space.ClassName),它們將起作用。ASP.NET MVC視圖在大規模重構後看不到任何類

爲什麼會發生這種情況,我該如何解決?

編輯:更多細節:

重構之前,我對自定義視圖頁面,母版頁和用戶控件類:

SalesWeb.Mvc.Views.SalesWebViewPage
SalesWeb.Mvc.Views .SalesWebMasterPage
SalesWeb.Mvc.Views.SalesWebUserControl

重構後:

Wasabi.SalesPortal.Mvc.Views.SalesPortalViewPage
Wasabi.SalesPortal.Mvc.Views.SalesPortalMasterPage
Wasabi.SalesPortal.Mvc.Views.SalesPortalUserControl

在web.config中,重構之前:

<configuration> 
    <system.web> 
     ... 
     <pages ...> 
      ... 
      <namespaces> 
       ... 
       <add namespace="SalesWeb.Mvc.Views" /> 
      </namespaces> 
     </pages> 
    </system.web> 
</configuration> 

後:

<configuration> 
    <system.web> 
     ... 
     <pages ...> 
      ... 
      <namespaces> 
       ... 
       <add namespace="Wasabi.SalesPortal.Mvc.Views" /> 
      </namespaces> 
     </pages> 
    </system.web> 
</configuration> 

我也更改了每個視圖,母版頁和用戶控件上的Inherits屬性。但是,當試圖訪問MVC應用程序時,它抱怨找不到SalesPortalMasterPage,儘管我完全肯定它存在,因爲我沒有任何問題時將其稱爲Wasabi.SalesPortal.Mvc.Views .SalesPortalMasterPage

+0

@David Brown:你必須提供更多細節。不知道之前或之後的狀態,不可能說。 – casperOne 2009-04-10 16:31:10

回答

1

嘗試清理bin目錄並重建。有時候一個較老的dll會在bin文件夾中徘徊,導致引用/命名空間混亂。

0

當命名空間與保存視圖的名稱空間不同時,我遇到了類似的問題。我的問題是,當我使用強類型視圖引用不在網站的名稱空間中的類時,如果在視圖本身中定義它,則它不會識別它。我的解決方案是爲每個視圖創建一個代碼隱藏文件,並在那裏定義類(以便它位於相同的名稱空間中),並讓視圖繼承代碼隱藏類。我意識到這是做到這一點的舊方法(而不是推薦),但這是我發現的唯一工作。我偶然發現,因爲在代碼隱藏之前創建的版本停止默認創建的視圖仍然有效,而在沒有隱藏代碼的情況下創建的視圖無法編譯。你可能想試試看它是否能解決你的問題。

我已經在Codeplex上報告了這個問題,順便說一句。

編輯:根據您的評論,您可能不會看到和我一樣的問題。您可能需要檢查程序集名稱(和默認名稱空間)是否已在項目中更新。也許問題在於程序集名稱與您的名稱空間不匹配。

+0

之前它工作得很好。唯一改變的部分是命名空間的第一級(SalesWeb - > Wasabi.SalesPortal)。 – 2009-04-10 17:46:27