![](/img/trans.png)
[英]JavaScript file only works or loads inside Visual Studio Development Server
[英]Visual Studio confused by server code inside javascript
我遇到了一个烦人的问题:以下代码在Visual Studio中给出了警告。
<script type="text/javascript">
var x = <%: ViewData["param"] %>;
</script>
警告是“期望的表达式”。 Visual Studio感到困惑,此后所有的javascript代码都发出大量警告。 当然,所有警告都可以,并且在运行时也能很好地工作-但是很容易在许多误报中错过真实的警告。
它在VS2008中的工作方式相同,而在VS2010中未修复。 有人知道是否有解决方法或补丁吗?
您需要将服务器端表达式包装在引号中。
<script type="text/javascript">
var x = "<%: ViewData["param"] %>";
</script>
这是我从微软那里得到的:
不幸的是,这是由于我们的编辑器的设计限制所致。 我们已经有多个用户提供相同的反馈,但是目前除了避免在服务器端生成客户端脚本之外,我们还没有一个好的解决方案。 我们将在计划下一个Visual Studio版本时考虑此问题。
您可以使用引号或行注释来欺骗IDE
原始代码:
<script type="Text/javascript">
<%If Page.IsPostback Then%>
alert("my javascript code");
<%End If%>
</script>
解:
<script type="Text/javascript">
//<%If Page.IsPostback Then%>
alert("my javascript code");
//<%End If%>
</script>
这不是标准行为,它只是随机发生的,在这种情况下,只需重命名文件然后构建将有所帮助(并且即使不构建也可能会解决),然后可以还原。
您还可以在“工具”->“选项”->“文本编辑器”->“ JScript”->“其他”下完全禁用Java脚本上的警告。
当然,在这种情况下,您将错过Java Script警告,但是至少您将能够专注于服务器端警告。
您采用的方法不是特别坚固。 显然,如果您想将Javascript代码移到单独的文件中以缩短页面加载时间,则无法使用...。
最好使用隐藏的表单字段将数据从服务器移至客户端脚本。 另外,您可以通过执行一系列字符串连接,然后使用ClientScriptManager.RegisterClientScriptBlock()
方法以编程方式构建变量设置器JS代码,然后将其注入输出中。
我相信您从Visual Studio要求理解太难的想法。
Visual Studio如何知道传递的字符串中包含什么? ,它的参数,它的更多代码,它是什么??? .... VS如何知道它是什么,从而可以以这种方式使用它们?
因此,他们决定脚本标签上的所有内容都必须是JavaScript。
我的观点是,如果您能避免发生此错误,请在JavaScript的ASP.NET页面(而不是ASPX页面)内编写此JavaScript。
string cPlaceMeOnScript = "<script type=\"text/javascript\">var x =" + ViewData["param"] +";</script>"
并使用任何方法将此字符串放在脚本的开头。
我不敢相信有多少回应说“将JavaScript放在代码后边”。 这是一个非常糟糕的主意,并且通过将演示文稿与业务逻辑混合来混淆代码。 如原始海报所述,这仅是警告。 虽然很烦人,但不值得将您的代表行为与服务器端代码(也就是编写不良代码)混在一起。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.