2010-07-13 37 views
1

我有一個較老的asp.net mvc解決方案(s#arp框架),其中兩個項目一個用於web,一個用於控制器。我已經將該DLL更改爲System.Web.MVC和Microsoft.Web.MVC的最新版本(2.0)。我也調整了我的Web.Config:從asp.net mvc 1.0轉換 - > 2.0 - s#arp框架

<add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 

這是(理論上)我所要做的嗎?

的解決方案建立很好,但我得到這個錯誤:

試圖訪問一個元素作爲一種類型的與陣列不相容。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.ArrayTypeMismatchException:嘗試訪問元素作爲與數組不兼容的元素。

源錯誤:

線32: 線33:ViewEngines.Engines.Clear(); 第34行:ViewEngines.Engines.Add(new AreaViewEngine()); 第35行: 第36行:ModelBinders.Binders.DefaultBinder = new SharpModelBinder();

這可能與mvc開關無關,而是s#arp框架。有任何想法嗎?謝謝。

最良好的祝願,

基督教

回答

2

這個問題與至S#ARP架構。你需要在這裏獲得MV#2版本的S#arp:http://github.com/codai/Sharp-Architecture/downloads。列表中的第一項是你想要的,包括VS2010模板。 (注意描述中的錯字,說ASP.NET 2,應該是ASP.NET MVC 2)

希望有所幫助。

P.S.如果您對該例外本身的原因感到好奇,請查看以下簡要文章:http://dotnetperls.com/arraytypemismatchexception。我懷疑(不考慮S#arp 1和MVC2源代碼)SharpModelBinder(MVC1版本)現在與MVC DefaultBinder的MVC2實現不兼容,並且這在編譯時未捕獲,因爲SharpModelBinder繼承自DefaultBinder並且編譯器認爲一切都很好。只有在運行時纔會檢測到不可兼容性。

+0

布蘭登將是正確的。 – Alec 2010-07-13 23:50:35

+0

嗨,我快到了。我將lib文件夾中的所有dll與s#arp的更高版本進行了交換。然後確保解決方案中的所有dll指向最新的dll(例如,現在只有一個sharparch dll)。一切編譯和網站運行,但mvc contrib網格現在導致一些問題 - 爲什麼我想切換到mvc 2.0的原因... – cs0815 2010-07-14 06:51:40

+0

你找出了MvcContrib網格問題?如果沒有,你在這裏發表了另一個問題嗎?如果沒有,那麼很多MvcGrid的人都會很樂意提供幫助。 – 2010-07-14 14:06:20