asp.net 如何在MVC中的razor 输出JS
2016-03-30 16:29
381 查看
今天我写代码的时候,无意中有个需求需要在razor里写JS,当时各种写法都尝试了,还问过人,很多人都不知道正确的写法。
举个栗子:
如果我后台传过来一个值,在cshtml代码中根据这个值的类型去输出不同的JS
这样的写法是有误的,无论是否在 alert(ViewData["i"]); 中的 ViewData["i"] 前加 @ 都是错误的。
因为 在 @if 的代码块里,已经从内容模式变为编译模式,编译器会默认 {} 里的代码全是 razor
通过使用<text>这个伪元素来强制Razor从编译模式返回到内容模式:
正确代码应该是这样:
这样razor 输出的结果会转为 text,最后作为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脚本输出
相关文章推荐
- Asp.net入门
- spring data jpa 利用JpaSpecificationExecutor做复杂查询
- Raspberry Pi 整点报时
- 【ASP.NET Core】mdl conflicts with tinymce
- Asp.Net 2.0 的 Master Page(母版页)
- Web服务器Raspkate的RESTful API
- asp.net mvc全局错误处理
- 2016-AspNet-MVC教学-7-Linq在数组中的应用
- ASP web.config 配置遇到的问题
- 基于轻量型Web服务器Raspkate的RESTful API的实现
- ASP.NET MVC中Scripts.Render、Styles.Render的使用
- Raspberry安装ssh
- 解决Raspberry使用vim键盘布局问题
- aspx ashx
- 【Raspberry Pi系列】2. 多种传输方式的比较
- Asp.Net Repeater的两层嵌套以及遍历取值的简单实现(checkbox)
- Asp.Net:GridView 编辑、删除、自定义分页以后备用
- Aspectj切入点语法定义
- Vesions ignore & ld: library not found for -l..
- ASP.NET MVC Web API 学习笔记---第一个Web API程序