在剃刀视图中的三元if运算符内分配变量

时间:2017-10-03 18:39:16

标签: html asp.net-mvc razor

我遇到一个问题,我在其中声明了一个变量,并想在if三元运算符中评估这个和更多条件,但是当我在这个三元运算符中分配一个变量时,我总是在HTML标记中得到变量,例如这段代码:

@{
    var panelTab = "";

    @(model.SelectedTab == "Overview" ? panelTab = "active" : "");

}

将在HTML DOM元素中生成“active”一词。我知道你在想什么,可能会说,“这是因为@符号而发生的”,但如果我删除那个符号它也不会编译三元运算符,所以我卡住了,任何帮助?

非常感谢。

3 个答案:

答案 0 :(得分:1)

您没有以正确的方式使用三元运营商。将其更改为:

@{var panelTab = model.SelectedTab == "Overview" ? "active" : ""};

答案 1 :(得分:1)

尽管@adiga's answer很有帮助,并且会解决OP所面临的问题,但我想稍微展开一下。

当你写:

@{

}

你告诉剃刀这里c#代码块开始了,现在你在里面编写的c#代码就像在.cs文件中编写代码一样,你不需要放{{1在那个街区。

@仅在我们没有明确声明c#代码块时才需要,我们想添加一些剃刀代码,当然是c#表达式或语句与html结合然后我们使用它。

希望它能帮助您理解两者的区别。

答案 2 :(得分:0)

def input = new File("src/test/resources/ShortExample.json")
def json = new JsonSlurper().parse(input)
def changeValueTo = null
def (tkn1, tkn2, tkn3, tkn4) = csvData.fullPath.tokenize('.')
json["$tkn1"]["$tkn2"]["$tkn3"]["$tkn4"] = changeValueTo