【问题标题】:<%= %> embedded in Javascript IF Condition<%= %> 嵌入 Javascript IF 条件
【发布时间】:2011-03-22 12:22:58
【问题描述】:

在aspx页面中:

if (<%= Not Me.ThisVisa.PassportExpirationDate.IsNull %>){   

返回错误:

Microsoft JScript 运行时错误:“True”未定义

我试过这个:

if ("<%= Me.ThisVisa.PassportExpirationDate.IsNull.ToString %>" != "True"){   

..但我得到一个编译时错误:

Error   5   Option Strict On disallows implicit conversions from 'String' to 'Long'

救命!

【问题讨论】:

  • 如果你查看你的html源代码,第一个sn-p会向浏览器渲染什么?

标签: javascript asp.net vb.net


【解决方案1】:

考虑将逻辑移到服务器脚本中。这样做会减少您在页面上发出的 JavaScript 数量。

<% If Not Me.ThisVisa.PassportExpirationDate.IsNull Then %>

// JavaScript Goodness

<% End If %>

【讨论】:

  • 如果这只是调用链接 .js 文件中的方法会更好
  • 如果“IF”条件被评估为 FALSE,这会导致 Javascript 块不被发出还是无条件发出 Javascript?我认为意图是前者发生。
  • @Velika:意图和效果。在 ASP.NET 中,在标记页上, 之间的内容在服务器上执行。它有点经典的 ASP 风格,并在 MVC 框架中重新流行起来,但它在 ASP.NET WebForms 中也同样有效。
【解决方案2】:

怎么样:

if (<%= (Not Me.ThisVisa.PassportExpirationDate.IsNull).ToString().ToLower() %>){  

这将评估布尔条件并将其转换为字符串,但您应该将其小写,以便在呈现时看起来像 JavaScript 语法。

【讨论】:

  • 这是对的,但我也会使用显式条件运算符来列出字符串文字,因为如果在不同的本地化环境下运行,此代码仍可能不会输出预期的内容。
  • @Joel:您是否建议做一些事情,例如在现有内容周围添加引号(删除ToLower())并将其与Boolean.TrueString 进行比较?这能满足本地化问题吗?
【解决方案3】:

去掉多余的空格。改为:

if ("" != "True"){

【讨论】:

    【解决方案4】:

    您缺少ToString() 方法的括号。

    更新:对不起,我的错

    【讨论】:

    • 他在做 VB.NET。不需要括号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 2010-12-17
    • 2011-12-28
    相关资源
    最近更新 更多