奇怪的Javascript If语句
Weird Javascript If Statement
我不确定我的if语句有什么问题。我想在我的javascript中使用我的模型。
if (@Model !== null)
{
if (@Model.Level !== null)
{
//use @Model.Level
}
}
else
{
//use default
}
Model为null,但它仍然会进入第一个if语句(显然在第二个语句时中断)。我试过@Model
, !@Model
和!=
,但它仍然总是介入。
我做错了什么?(!==
下面也有弯弯曲曲的红线,表示有语法错误)
三元方程在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端出现错误。空检查应该在服务器端完成。因此,你必须在代码前面加上@ value,使其成为服务器端:
<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>
为了检查javascript中的内容是否为null或未定义,请使用if (@model)而不是if (@model !== null)http://appendto.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-2/
它进入if语句的原因是因为它的计算结果为true,这里没有发现任何奇怪之处。你的浏览器不是喜怒无常的。要查看列表比较,请查看http://dorey.github.io/JavaScript-Equality-Table/
还要注意double和triple =之间的区别。
这段代码看起来很像Razor然后是Javascript,尽管你可能会尝试将两者混合在一起。
你的选择:
1)使用如下代码将Model转换为JavaScript对象:
在。net 4中将c#对象转换为JSON字符串
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>
}
- 可以't让我的if语句处理js中的html表单输入
- 如何在 API 调用后和 if 语句中启用提交按钮
- 带有多个elseif的Javascript if语句
- Sharepoint JScript if语句未执行
- for循环中的javascript if语句找不到==
- jquery if语句返回return wong语句
- 在if语句下的html中使用javascript变量
- 将错误与if语句混淆
- 循环通过数组的If语句不起作用
- jQuery模板中的If语句
- 如何从数据库中回显If语句
- 如何减少if语句的数量
- 在Javascript中将一个值和字符串数组转换为if语句
- Dropbox oauth认证的IF语句的第二部分是't已触发
- MVC Jquery-按钮点击-获取if语句错误
- 如何重写Javascript If语句以选择Classes而不是ID's的HTML格式
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- If语句发布或操作员发布
- 清除函数中if语句内部不起作用的间隔
- 使用if语句重新循环