Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 基于当前操作在ActionLink上设置@class_Asp.net_Razor - Fatal编程技术网

Asp.net 基于当前操作在ActionLink上设置@class

Asp.net 基于当前操作在ActionLink上设置@class,asp.net,razor,Asp.net,Razor,我有一个带有操作链接的简单菜单。它们都连接到同一个控制器。我希望它们有一个基本的HTML类,除非它们是活动的动作,否则我想设置另一个类。 链接只是在要显示的数据之间切换 我尝试了以下方法: @Html.ActionLink("Oversikt", "Overview", "Statistics", null, new {@class= @(ViewContext.RouteData.Values["action"] as String == "Overview" ? "activeStatMe

我有一个带有操作链接的简单菜单。它们都连接到同一个控制器。我希望它们有一个基本的HTML类,除非它们是活动的动作,否则我想设置另一个类。 链接只是在要显示的数据之间切换

我尝试了以下方法:

@Html.ActionLink("Oversikt", "Overview", "Statistics", null, new {@class= @(ViewContext.RouteData.Values["action"] as String == "Overview"  ? "activeStatMenuItem" : "statMenuItem") })

我认为它可能错过了ViewContext前面的
@
,但这没有帮助,所以我尝试将所有内容都设置为字符串。这使得VisualStudio抱怨字符串(并且它也给出了一个编译错误)

如果我也把它添加到类中,比如

@Html.ActionLink("Oversikt", "Overview", "Statistics", null, new {@class= "@(ViewContext.RouteData.Values['action'] as String == 'Overview'  ? 'activeStatMenuItem' : statMenuItem')" })
它将
statMenuItem
-类添加到所有项中

让中间的字符串用<代码>“ySype”表示它停止抱怨,但不能解决我的问题——它只是将活动CSS类添加到所有的项目中。

我发现,如果我把所有的东西都做成一个长字符串,而没有“<代码> < <代码> >也不要<代码> > />代码中间,会使所有的东西停止抱怨,但它也似乎把每个表达式都计算为真,所以所有的项目都得到了活动的CSS类。 我对Visual Studio、ASP.NET和Razor(本项目于周四开始)都非常缺乏经验,因此我可能(/可能)错过了一些简单的东西。提前感谢您的耐心


非常感谢所有帮助!

最简单的方法是创建一个变量,执行表示逻辑,然后将该字符串值分配给链接的@class

@{
   var myClass = ViewContext.RouteData.Values["action"] as String == "Overview"  ? "activeStatMenuItem" : "statMenuItem";
}
后来

@Html.ActionLink("Oversikt", "Overview", "Statistics", null, new {@class= myClass })
应该做的诀窍…希望你得到的想法,还没有测试它,所以它可能略有不同


把太多的步骤组合成一行从来都不是一个好主意。这样很难找到问题,也很难阅读和理解到底发生了什么。

它成功了,非常感谢!我仍然想知道为什么这样做有效,但直接写出来却不行。你的引用(“)有问题,因此无法正确解析它。有很多方法可以逃避它,但它很快就会变得非常丑陋。