2015-01-09 68 views
0

對於C#MVC 5應用程序,我們有以下的局部視圖:爲什麼Resharper期望在這裏使用右大括號?

@using some.using.here 
@using some.using.here 
@using some.using.here 

@{ 
    var treeItem = TempData["SELECTED_TREEITEM"] as ITreeItem; 
    string path = treeItem.GetIdPath(TempData.GetParentId()); 
    User user = Session["somesessionkey"] as User; 
} 

<!-- Selected item from URL --> 

@if (treeItem != null) 
{ 
    <input type="hidden" id="routeData" data-key="@treeItem.Key" data-treepath="@path" data-area="@TempData["SELECTED_AREA"]" data-mode="@TempData["SELECTED_MODE"]"> 
} 
<input type="hidden" id="defaultAsset" data-default="@(user != null ? (user.DefaultAsset != null ? methodcall(value).ToString() : string.Empty) : string.Empty)" /> 
<input type="hidden" id="newPeriodHrs" data-newperiodhrs="@(user != null ? user.NewPeriodHrs : 48)" /> 

但是,無論我做什麼,ReSharper的保持與以下消息抱怨:

查看\共享\ _RouteData。 CSHTML:18結束的括號預計

爲了節省您從計數第18行是在文件的結尾。

與Resharper建議的相反,整個項目編譯並運行良好。 但是,我仍然有某種語法問題,我失蹤了?或者,Resharper在這種情況下顯然是錯誤的? 我正在運行Resharper 8.2(C#版)。

(請原諒我可憐的企圖在從代碼刪除敏感信息,我將所有括號和上述完整)

+0

是否代碼編譯?你能查看頁面嗎?在Razor中缺少'}'會導致YSOD。如果你能查看頁面,Resharper是錯誤的。如果你不能,你可能會在異常信息 –

+0

上看到一個類似的錯誤我會打賭,雖然這個「@TempData [」SELECTED_AREA「]」'引起了問題 - 字符串中的雙引號 –

+0

代碼編譯並運行良好(如上所述)。 ''@TempData [「SELECTED_AREA」]「'實際上工作得很好,不會導致其它頁面上的錯誤。 – Vincent

回答

1

原來的解決方案確實是偷偷摸摸的,單斜線丟失在這片:

@if (treeItem != null) 
{ 
    <input type="hidden" id="routeData" data-key="@treeItem.Key" data-treepath="@path" data-area="@TempData["SELECTED_AREA"]" data-mode="@TempData["SELECTED_MODE"]"> 
} 

應該是這樣的:數據模式= 「@ TempData的[」 SELECTED_MODE 「]」 />

+0

它仍然是一個Resharper錯誤,因爲它將有效的HTML標記與服務器端代碼混淆。 'input'元素是一個void元素,在HTML5中不需要結束斜槓。也許它在R9中是固定的 –