2010-11-23 102 views
62

我試圖用以下語句:如何在Razor視圖文件中使用通用語法?

@Html.Test<ISQL>().Nand() 

然而,剃刀在<的ISQL之前窒息。

任何官方的工作呢?

+0

...你錯過了什麼,因爲你沒有把它放在代碼塊中?我沒有看到任何低於標誌... – Paul 2010-11-23 06:05:52

回答

86

要使用通用的方法,你需要躲避表達

@(Html.Test<ISQL>().Nand()) 
+0

謝謝! MVC團隊是否在某處提到過它?我不記得讀這個... – kidoman 2010-11-23 06:45:42

+0

我確定它在那裏。 – marcind 2010-11-23 06:47:24

6

我明白,這個「答案」是有點晚了,問題已明顯得到滿意的(和好)回答。但是,對於此頁面的任何未來訪問者,如果您正在閱讀更完整的參考指南,那麼還有MS introduction to Razor syntax以及Phil Haack的非常有用的Razor quick reference博客文章。

13

當我在升級mvc時尋找這個「同樣的錯誤」時,我剛剛發現了這個問題。

我:

不起作用:

@{ 
    ViewBag.Title = "Something " + @Model.Title; 
    var something = (IEnumerable<SelectListItem>)ViewBag.Options;  
} 

顯然,語法去嚴格,因爲你是一個@ {}塊裏面,你不應該型號前加上@。標題的例子。但是代碼編輯器的錯誤是指向泛型,它讓我發瘋。

如果在代碼中沒有<>,它可以正常工作,但只需從Model.Title中刪除@即可解決問題。

作品:

@{ 
    ViewBag.Title = "Something " + Model.Title; 
    var something = (IEnumerable<SelectListItem>)ViewBag.Options;  
} 

希望這有助於任何人

2

這是關於@字符,這個例子作品之前升級

@{ 
    string @class = [email protected]; 
    IDictionary<string, object> htmlAttributes = new Dictionary<string, object>(); 
} 

升級後,它必須被分成兩個街區

@{ string @class = [email protected]; } 
@{ IDictionary<string, object> attrs = new Dictionary<string, object>(); } 
2

我有一個奇怪的情況,當我有一個@{ ... }博克幾個任務。

@{ 
    // ... other assignments (without error) 
    List<string> stringList = new List<string>() // ERROR MESSAGE HERE 
} 

我做什麼都,總是有一些錯誤,如:

使用泛型類型 '列表',需要一個類型參數

解決方案: 我將分配線設置爲@{ ... }bock

@{ 
    // ... other assignments 
} 
@{ 
    List<string> stringList = new List<string>() // WORKS 
}