這個問題只是一個快速的問題。我在頁面上有一組鏈接,它們都指向相同的控制器方法 - 它們之間的區別在於它們每個都傳遞一個不同的值給該方法,以便後續過程略有不同。我碰巧已經定義爲對應於傳遞的可能值的枚舉,所以想也沒想,我這樣做:在@ Url.Action中使用枚舉()routevalues
@Url.Action("QueryStepTwo", new { type = QueryType.UserRecords })
,並驚喜地看到,焉得虎子紅色下劃線。我點擊編譯並導航到該頁面,以驗證CS0103的錯誤消息:「名稱'QueryType'在當前上下文中不存在」。在編輯器中,QueryType
是語法高亮顯示的,IntelliSense在我輸入時提供選項列表。
我假設這只是一個VS /智能感知只是有點太聰明,知道事實,實際的頁面分析/渲染引擎不能?將枚舉強制轉換爲字符串或int值並沒有幫助,所以我猜這是與執行的順序有關的。更具體地說,當Razor看到頁面時,枚舉已經超出了範圍。有沒有一種方法可以像這樣在URL助手中使用枚舉,特別是不需要將枚舉定義爲視圖模型的成員?我不喜歡在各地使用魔術弦;他們太容易受到錯別字和愚蠢。
'@ using'指令已經存在;沒有它我沒有突出顯示或智能感知。多麼奇怪。 – anaximander 2013-02-20 15:21:25
典型的Visual Studio問題:停止開發服務器進程,清理,重建,再次運行...並且問題消失。某處某處必須被緩存,或者其他東西。如果微軟需要解決一件事情,那就是VS引入這種不存在的錯誤的方式。無論如何,你的答案在技術上是正確的,所以你得到了接受:P – anaximander 2013-02-20 15:24:20