2010-07-31 60 views
1

我試圖將現有的ASPX頁面轉換爲cshtml格式。剃刀視圖引擎 - 調用任何函數時的例外

原來的ASPX看起來是這樣的:

<% 
    if (!Model.ObjectList.Any()) 
    { 

     %> 
     <tr> 
      <td>No data found</td> 
     </tr> 
     <% 
    } 

等效剃刀的版本是這樣的:

@if (!Model.ObjectList.Any()) 
{ 
<tr> 
    <td>No data found</td> 
</tr> 
} 

雖然原始語法工作得很好,等效失敗,出現以下消息

'System.Collections.Generic.List' 不包含廣告efinition爲 '任何'

我想知道
一)爲什麼發生這種情況,並
B)如何解決這個問題。我在CSHTML文件中添加了對System.LINQ命名空間的引用,但無濟於事。

任何幫助是非常讚賞,

JP

+0

您已經爲System.Core程序集引用? – fletcher 2010-07-31 07:22:12

+0

當然他確實這樣做了,因爲'System.Web.Mvc'依賴於'System.Core',並且該站點甚至不會運行。 – 2010-07-31 08:36:06

+0

@JP,我測試了你的場景,無法重現錯誤。 – 2010-07-31 08:37:03

回答

3

感謝大家對他們的答案。這竟然是一個ID 10 T ....

本質上,我忽視強烈鍵入我的看法。我用

@inherits System.Web.Mvc.WebViewPage<dynamic> 

而是採用

@inherits System.Web.Mvc.WebViewPage<MyViewModel> 

使用正確類型固定的問題。再次感謝 , JP

0

需要導入正確的命名空間:

using System.Linq; 
+0

正如我在b點提到的,我已經添加了這個參考... – 2010-07-31 14:24:53

0

你也可以這樣做:

@if (Model.ObjectList.Count == 0) 
{ 
<tr> 
    <td>No data found</td> 
</tr> 
}