Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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
在JavaScript条件语句中使用Razor语法_Javascript_C#_Asp.net Mvc_Razor_Conditional - Fatal编程技术网

在JavaScript条件语句中使用Razor语法

在JavaScript条件语句中使用Razor语法,javascript,c#,asp.net-mvc,razor,conditional,Javascript,C#,Asp.net Mvc,Razor,Conditional,在index.cshtml中,我有以下类似的工作代码: <script type="text/javascript"> if ('@Model.SomeCondition' === 'True'){ Do Something(); } </script> 如果('@Model.SomeCondition'='True'){ 做某事; } ='True'对我来说似乎是一种奇怪的黑客行为,迫使Razor和JavaScript相处。如何重构以使用==true?这不会给

在index.cshtml中,我有以下类似的工作代码:

<script type="text/javascript">

if ('@Model.SomeCondition' === 'True'){
Do Something();
}

</script>

如果('@Model.SomeCondition'='True'){
做某事;
}

='True'
对我来说似乎是一种奇怪的黑客行为,迫使Razor和JavaScript相处。如何重构以使用
==true
?这不会给出相同的结果。使用Razor和JavaScript可以做到这一点吗?

假设
SomeCondition
是一个字符串,删除引号,并使其符合JavaScript布尔值的小写形式

<script language="javascript">
    // just to be clear this is javascript, not server code
    if (@Model.SomeCondition.ToLowerInvariant()){
        .. // 
    }
</script>

如果属性为
bool
,则可以按以下方式检入条件:

<script type="text/javascript">
@if (Model.SomeCondition){
@:Do Something();
}
</script>

@if(Model.SomeCondition){
@:做某事;
}
或:


@if(Model.SomeCondition){
做某事;
}    

只需用c#/razor编写if语句,并在其中执行javascript即可

例如:

@if(boolVariable)
{
    <script>
        //javascript here
    </script>
}
@if(布尔变量)
{
//javascript在这里
}

混合Razor和Javascript是个坏主意。您应该使用
data-*
属性将数据与代码分开。当然,这将计算服务器代码中的布尔值,并且仅在为true时输出javascript。在某些方面,这是一个比将服务器布尔值转换为客户端布尔值更好的解决方案。如果这是您想要运行的唯一JavaScript,那么这很好,但是如果它是更大块的一部分,那么它实际上不起作用,假设这是在已声明的标记中进行的,只需使用ViewContext.Writer.Write(“JavaScript here”)。首先,这不是一个好的场景,这只是一个没有重构一切的解决方案。
<script type="text/javascript">
@if (Model.SomeCondition){
<text>
Do Something();
</text>
}    
</script>
@if(boolVariable)
{
    <script>
        //javascript here
    </script>
}