2015-09-18 19 views
-1

我通常使用三元运算符来创建非常简单的条件,特别是在HTML属性中。例如:如何使用剃刀语法在asp.net中使用多个三元运算符

<fieldset id="Employee" style="@(Model.Type == "Employee" ? "" : "display: none")" > 

但我希望有多个三元运算符是这样的,但下面不工作:

<fieldset id="multi" 
    style="@(Model.Type == "W2" || 
      Model.Type == "1099" ? "" : "display: none")" > 
+0

你显示的作品很好。你有什么问题? –

回答

0

您可以使用Html.Raw。

<fieldset d="multi" 
    style="@Html.Raw(Model.Type == "W2" || 
      Model.Type == "1099" ? "" : "display: none")" > 
0

我宁愿把这样的逻辑在我看来,通过引进新物业的模式,例如ShowMulti,让我的观点很简单:

<fieldset id="multi" style='@(Model.ShowMulti ? "" : "display: none")' > 

在视图模型侧财产会是什么样子这样的:

public bool ShowMulti { get { return Type == "W2" || Type == "1099" } } 

作为替代你也可以引入CSS类名为hide

.hide { 
    display: none; 
} 

,只是在你的视图的开头实现逻辑:

@{ 
    var showMulti = Model.Type == "W2" || Model.Type == "1099" ? "" : "hide"; 
} 

,并在您的标签:

<fieldset id="multi" class="@showMulti" > 

但这种做法通常取决于您的视图的大小。

+0

错误:无法将类型'字符串'转换为'布尔'在这里>>'style ='@(Model.ShowMulti?“”:“display:none”)'' –

+0

我提出了两种方法。在第一个 - 你的表达式的返回类型是bool(是否显示该块),在第二个 - 结果类型是具有类的名称的字符串。我认为这是合乎逻辑的,因为类的名称可能会改变,您可以在不重建您的mvc项目的情况下进行更改。 –

+0

我已经在第一个案例的视图模型中添加了属性示例,以便让您更清楚。 –