<script type="text/javascript">
var destinationId = @(Model.DestinationId == 0?"":Model.DestinationId);
</script>
如果Model.DestinationId为0,我想输出“”,否则显示Model.DestinationId
答案 0 :(得分:0)
因为您的C#代码正试图在string
条件产生if
时返回true
,而在int
(值DestinationId
)时返回{{1}条件表达式返回false
。编译器告诉您它无效!您需要在两种情况下都返回相同的类型。
要解决此问题,请在两种情况下返回相同的类型。您可以在ToString()
type属性上使用int
方法,这样您的三元表达式将始终返回相同的类型(string
)
var destinationId = @(Model.DestinationId == 0 ? "" : Model.DestinationId.ToString());
尽管以上内容可以解决您的编译器错误,但可能无法满足您的要求。当您的DestinationId
属性值为0时,上面的代码将呈现如下内容。
var destinationId = ;
哪个会给您一个脚本错误
未捕获的SyntaxError:意外令牌;
,并且DestinationId
属性的值非零,例如10。
var destinationId = 10;
有多种方法可以解决此问题。一种简单的方法是用JavaScript可以理解的方式替换空字符串。在下面的示例中,我将null
呈现为值
var destinationId = @(Model.DestinationId == 0 ? "null" : Model.DestinationId.ToString());
if (destinationId===null) {
console.log('value does not exist');
}
else {
console.log('value is '+ destinationId);
}
另一种选择是简单地读取DestinationId属性值,并根据需要在JavaScript代码中检查0。
另一个选择是将整个C#表达式用单引号或双引号引起来。但是话又说回来,您的数字值将被表示为字符串:(,这不好。
我建议您使用正确的类型(即使在JavaScript中)