asp.net 如何在MVC中的razor 输出JS

今天我写代码的时候,无意中有个需求需要在razor里写JS,当时各种写法都尝试了,还问过人,很多人都不知道正确的写法。

举个栗子:

如果我后台传过来一个值,在cshtml代码中根据这个值的类型去输出不同的JS


<pre name="code" class="csharp">            @if (ViewData["i"]!=1)
            {
              alert(ViewData["i"]);
            }
            else
            {
               alert("空");
            }

 这样的写法是有误的,无论是否在   alert(ViewData["i"]); 中的  ViewData["i"] 前加 @ 都是错误的。 

因为 在 @if 的代码块里,已经从内容模式变为编译模式,编译器会默认 {} 里的代码全是 razor

通过使用<text>这个伪元素来强制Razor从编译模式返回到内容模式:

正确代码应该是这样:

<script type="text/javascript">            
@if (ViewData["i"]!=null)
            {
                <text>
              alert(ViewData["i"]);
            </text>
            }
            else
            {
            <text>
            alert("空");
            </text>
            }
</script>

这样razor 输出的结果会转为 text,最后作为JS脚本输出

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值