2013-04-07 2 views
2

스파크 뷰 엔진이 면도기와 같은 C# 코드 블록을 처리 할 수 ​​있습니까? 예를 들어, 면도기에 다음과 같이 표시됩니다.Spark View Engine의 C# 코드 블록?

@{ 
    var currentController = ViewContext.RouteData.Values["controller"] as string ?? "Home"; 
    var currentAction = ViewContext.RouteData.Values["action"] as string ?? "Index"; 
    var currentPage = (currentController + "-" + currentAction).ToLower(); 
} 

Spark View Engine에 해당하는 내용은 무엇입니까? 면도기처럼 코드를 사용하고 있으며 Spark에서도 같은 코드를 사용하고 싶습니다. 선을 표시하기 위해

<li @(currentPage == "home-index" ? "class = current" : "")> 
    @Html.ActionLink("Home", "Index", "Home") 
</li> 

답변

4

사용 # 그렇게 만 코드 : 또한

# var currentController = ViewContext.RouteData.Values["controller"] as string ?? "Home"; 
# var currentAction = ViewContext.RouteData.Values["action"] as string ?? "Index"; 
# var currentPage = (currentController + "-" + currentAction).ToLower(); 

, 당신이하고있는 모든 변수를 선언 할 경우, 당신은 할 대신 수 :

<var currentController="ViewContext.RouteData.Values['controller'] as string ?? 'Home'" /> 

사용법은 다음과 같습니다.

<li class="current?{currentPage == "home-index"}"> 
    ${Html.ActionLink("Home", "Index", "Home")} 
</li> 
+0

나는 따라서 이러한 변수를 기본 Controller 또는 전역 필터의 ViewData에 배치하여 모든 뷰에서 사용할 수 있도록해야합니다. –

+0

귀하의 첫 번째 제안에 따라,하지만 오류가 발생합니다 : 'currentController'이름이 현재 컨텍스트에 존재하지 않습니다. :(Q 업데이트도 – Ciwan

+0

hmm .. 오류 메시지가 나타나면보기의 전체 소스가 메시지에 있어야합니다. 소스를 검사하고 변수가있는 위치를 찾을 수 있는지 확인하십시오. 사용 된 곳과 선언 된 곳 –