为什么 RAZOR 输出一个大写的布尔值?

Joh*_*rne 4 .net html c# asp.net-mvc razorengine

@{
    bool a = false;
 }    

<script>

var element = '<a href="www.testurl.com" + '?a=' + @(a)';
$('#anyElement').append(element);

</script>
Run Code Online (Sandbox Code Playgroud)

锚标记将具有 www.testurl.com?a=False 的 href

至少在 IE11 中,变量 a 将呈现为 False 而不是 false。这会导致 ECMAScript 错误,因为现在 JavaScript/ECMAScript 编译器认为 False 是未定义的变量。

为什么 RAZOR 不以小写形式呈现此变量?

Ken*_*eth 6

Razor 只是使用ToString()你放在那里的任何东西的- 方法。在 a 的情况下bool,它将评估为TrueFalse。为了规避这个问题,只需自己小写:

@{
    bool a = false;
}    

<script>

var element = '<a href="www.testurl.com" + '?a.ToString().ToLower()=' +   @(a)';
$('#anyElement').append(element);

</script>
Run Code Online (Sandbox Code Playgroud)