我想这没什么大不了的,因为这个问题还有其他方法,但我真的很好奇答案,因为我认为这是可能的。
我有一个公共属性,它在后面的代码中返回一个布尔值。我想在我的 javascript 验证函数中访问这个服务器变量,但到目前为止,还没有完全理解它。
Public Property editMode() As Boolean
Get
If Cache("editMode") IsNot Nothing Then
Return (DirectCast(Cache("editMode"), Boolean))
Else
Return False
End If
End Get
Set(ByVal value As Boolean)
Cache("editMode") = value
End Set
End Property
function validateEdit()
{
alert("editMode value is " + '<%#editMode()%>');
if ('<%#editMode()%>'.toString() == "True")
{
alert("You are currently in edit mode. Please save or cancel changes.");
return false;
}
return true;
}
我已经尝试了很多变体,但它总是错误的。在当前代码中,警报返回“editMode value is False”
当我使用:
if ('<%#editMode()%>') ...
然后它仍然始终为 False,但它进入了 if 条件,因此行为就好像它始终为 true。
还要提到的另一件事是,我发现的大多数 javascript/server 标签内容都说要使用<%=editMode %>,但我不能这样做,因为每次我使用 = 而不是 # 时都会出现异常:
“无法修改 Controls 集合,因为该控件包含代码块(即 <% ... %>)。”
所以我通过使用 # 并说解决了这个问题
Page.Header.DataBind()
Page.Form.DataBind()
在页面加载事件处理程序中。
有任何想法吗?先感谢您。:)
(另外,我通常使用 C#,所以我可能在 VB 部分不知不觉中做了一些愚蠢的事情,所以也请随时指出这一点)