我不确定我的if语句有什么问题。我试图在我的javascript中使用我的模型。
if (@Model !== null)
{
if (@Model.Level !== null)
{
//use @Model.Level
}
}
else
{
//use default
}
Model是null,但它仍然进入第一个if语句(显然是第二个断开)。我已经尝试了@Model
,!@Model
和!=
,但它仍然会介入。
我做错了什么? (它在!==
下也有一条波浪形的红线,表示存在语法错误)
答案 0 :(得分:2)
三重方程在JavaScript中没有类型转换。在您的情况下,您可能会得到一个未定义的对象,该对象不是空值。
例如:
undefined === null //Do not cast when comparing, increased performance.
false
undefined == null //Do cast when comparing, decreased performance.
true
此外,如果@Model值为null,那么您将无法在客户端看到空值。它给你一个像这样的空值:
if( == null)
{
}
这会导致您的javascript端出错。空检查应在服务器端完成。因此,您必须将@值放在代码前面以使其成为服务器端:
<script>
@if (Model != null) //Server side code.
{
if (Model.Level != null) //still server side code.
{
<text>
alert("your javascript here"); //write javascript on your screen.
</text>
}
}
</script>
答案 1 :(得分:0)
为了检查javascript中是否为null或未定义,请使用if(@model)而不是if(@model!== null) http://appendto.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
答案 2 :(得分:0)
它进入if语句的原因是因为它的计算结果为true,所以在这里找不到任何奇怪的东西。您的浏览器不是气质。有关列表比较,请查看此http://dorey.github.io/JavaScript-Equality-Table/
另请注意,double和triple =之间存在差异。三人将输入
答案 3 :(得分:0)
此代码看起来很像Razor然后是Javascript,尽管你可能试图将它们中的两个混合在一起。
您的选择:
1)使用以下内容将Model转换为JavaScript对象:
Turn C# object into a JSON string in .NET 4
2)使用Razor if语句并用它写出最终的JavaScript。
<script>
// Code assume this is an numeric value
var useThisVariable;
</script>
if (@Model !== null)
{
if (@Model.Level !== null)
{
<script>
useThisVariable = @Model.Level;
</script>
}
}
else
{
<script>
useThisVariable = -1;
</script>
}