2013-07-10 54 views
0

我有一個相當大的mvc項目,我已經分解成幾個區域。我使用添加區創建了區域,然後將我的一些控制器和視圖從我的主控制器和視圖文件夾中剪切並粘貼到區域中。mvc - 將一個項目分成幾個區域

當一個動作是從區域控制器上運行,這些似乎執行罰款,直到他們嘗試返回視圖,然後回來這個錯誤:

The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Home/Index.aspx 
~/Views/Home/Index.ascx 
~/Views/Shared/Index.aspx 
~/Views/Shared/Index.ascx 
~/Views/Home/Index.cshtml 
~/Views/Home/Index.vbhtml 
~/Views/Shared/Index.cshtml 
~/Views/Shared/Index.vbhtml 

如果我成立了一個新的測試區域,並創建控制器,並認爲這似乎工作正常。有沒有人知道我可能做錯了什麼,我一直在研究這一點並嘗試一整天,現在已經完全停滯。

回答

-1

嘗試指定的完整路徑是在返回視圖聲明:例如

~/Areas/Admin/Views/Category/_CategoryDetails.cshtml

,如果您使用的是行動,是不是有問題的默認視圖,否則你必須指定完整的路徑。

+0

未必是真實的。另外,OP沒有提到用名字來調用觀點。 –

+0

嗨 - 感謝您的回答。這出現了相同的錯誤。我猜測,這可能是與視圖引擎,根據我的主要帖子中的錯誤消息。 –

2

確保在您的AreaRegistration.cs文件中調用context.MapRoute(..) 還要確保您的Views文件夾處於正確的層次結構中。即查看=> ControllerName

但最重要的,看看你複製的控制器有適當命名空間即

MvcApplication.Areas.AreaName.Controllers 

代替

MvcApplication.Controllers 
+0

嗨 - 謝謝你。看來,我有這兩個設置正確 - 公共覆蓋無效RegisterArea(AreaRegistrationContext上下文) { context.MapRoute( 「Rigoletto_default」, 「弄臣/ {控制器}/{行動}/{ID}」, new {action =「Index」,id = UrlParameter.Optional} ); 而視圖設置爲Views => ControllerName =>查看名稱 –

+0

嗨 - 另一個好主意,但這已經到位。 –