在CSHTML页面中实现一个switch语句

我正在尝试做一些不同的事情。 我有一个包含Id的视图。 基于Id的价值,我想改变我的标题出现。 就像是:

@{ switch id case "test": @;<h1>Test Site</h1> case "prod": @:<h1>Prod Site</h1> break; } 

我有相当多的案件条件,所以我虽然使用案件将是最好的。 任何人都可以build议我如何做到这一点,并得到它的工作? 我得到了很多的语法错误,所以我想也许它没有很好地编码。

您的交换机需要完全封装在一个模块中,并且需要正确地“断开”

 // Use the @{ } block and put all of your code in it @{ switch(id) { case "test": // Use the text block below to separate html elements from code <text> <h1>Test Site</h1> </text> break; // Always break each case case "prod": <text> <h1>Prod Site</h1> </text> break; default: <text> <h1>WTF Site</h1> </text> break; } } 

由于<h1>标签本身是封闭的html块,因此您可能不需要<text>块进行分离。 包括他们只是我的习惯。

 @switch (id) { case "test": <h1>Test Site</h1> break; case "prod": <h1>Prod Site</h1> break; } 

没有必要把整个switch语句放在一个@{}块中(不像Joel Etherton的post)

你的错误基本上是正常的语法错误,并与剃刀无关;

  1. 该variables不在括号中

  2. 开关的主体不在括号内

  3. 在第一个陈述后没有“rest”。

这个问题并没有回答你的问题,正如问题的标题所表明的那样,但它确实解决了你在问题主体中所描述的问题。

使用视图模型类作为视图的模型,并添加一个包含switch语句的方法。 然后通过@Model.MethodWithSwitchStatement()从视图中调用方法。 [该id可以保存在视图模型对象中。]