Mel*_*ssa 3 javascript razor asp.net-mvc-3
我有以下javascript:
<script type="text/javascript">
function doReveal() {
if (@Model.C1 == true) {
document.getElementById('A1').style.backgroundColor = 'yellow';
}
if (@Model.C1 == false) {
document.getElementById('A1').style.backgroundColor = 'yellow';
}
</script>
Run Code Online (Sandbox Code Playgroud)
我想这样做,以便函数doReveal检查Model.C1(这是一个布尔值)然后更改背景颜色,如果它是真的.
然而,我收到一条消息,说"条件编译已关闭",并且Model.C1下的绿色波浪线以及背景颜色也不会改变,即使我同时具有true和false.
我测试了背景更改线,并且在"if"之外工作.
查看页面源我看到:
if (True == true) document.getElementById('A1').style.backgroundColor = 'yellow';
Run Code Online (Sandbox Code Playgroud)
我更改了它并删除了== true但它仍然无法正常工作.即使以下也行不通.然而它的作用是删除"if(True)"并设置颜色.
if (True) document.getElementById('A1').style.backgroundColor = 'yellow';
Run Code Online (Sandbox Code Playgroud)
有谁知道什么可能是错的?
arc*_*hil 11
剃刀代码起始符号必须位于if语句之前.否则,引擎认为如果是javascript代码的一部分,而不是剃刀.另外我认为你需要剃刀文字标记
<script type="text/javascript">
function doReveal() {
@if (Model.C1 == true) {
<text>
document.getElementById('A1').style.backgroundColor = 'yellow';
</text>
}
@if (Model.C1 == false) {
document.getElementById('A1').style.backgroundColor = 'yellow';
}
</script>
Run Code Online (Sandbox Code Playgroud)
另一种情况是你想在javascript而不是服务器端运行if语句.在这种情况下,您的剃刀标记是corect,但生成的代码就像
<script type="text/javascript">
function doReveal() {
if (False == true) {
document.getElementById('A1').style.backgroundColor = 'yellow';
}
if (False == false) {
document.getElementById('A1').style.backgroundColor = 'yellow';
}
</script>
Run Code Online (Sandbox Code Playgroud)
False不等于true,也不等于false.(javascript区分大小写).True的情况相同.所以,你的if语句不会执行.
| 归档时间: |
|
| 查看次数: |
16159 次 |
| 最近记录: |