この問題を回避する方法は他にもあるので、これは大したことではないと思いますが、私はこれが可能だと思っていたので、答えについては本当に興味があります.
コード ビハインドでブール値を返すパブリック プロパティがあります。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;
}
これについてさまざまなバリエーションを試しましたが、常に False です。現在のコードでは、アラートは「editMode 値が False です」を返します。
私が使用する場合:
if ('<%#editMode()%>') ...
その後も常に False ですが、if 条件に入るため、動作は常に true であるかのようになります。
言及するもう1つのことは、私が見つけたほとんどのjavascript/serverタグのものは<%=editMode %>を使用するように言っているということですが、 # の代わりに = を使用するたびに例外が発生するため、これを行うことはできません:
「コントロールにコード ブロック (つまり <% ... %>) が含まれているため、Controls コレクションを変更できません。」
だから私は # を使ってこれを解決しました
Page.Header.DataBind()
Page.Form.DataBind()
ページ読み込みイベント ハンドラ内。
何か案は?前もって感謝します。:)
(あと、普段はC#を使っているので、無意識にVBの部分でおかしなことをしているかもしれませんので、その点もご指摘いただければ幸いです)