2013-04-07 36 views
2

Spark View Engine可以处理C#代码块如Razor吗?例如,我在剃刀中有以下内容: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中的相当于什么?然后我使用Razor中的代码,我想在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

I would al所以主张将这些变量放在基本控制器或全局过滤器中的ViewData中,以便它们可用于任何视图。 – 2013-04-08 13:34:25

+0

我遵循你的第一个建议,但我得到的错误:名称'currentController'在当前上下文中不存在。 :(Q也更新了。 – Ciwan 2013-04-09 10:22:24

+0

嗯..它对我来说工作得很好。在获得的错误信息中,视图的完整源代码应该在消息中。检查源代码并查看是否可以找到变量的存在位置使用和声明的位置 – 2013-04-09 14:47:06

相关问题