JavaScriptのサーバー側の変数
-
15-09-2020 - |
質問
これがこの問題のまわりに他の方法があるので、私はこれが大きな取引ではないと思いますが、これが可能であると思ったので、私は答えに関して本当に好奇心が強いです。
私のコードの後ろのコードでブール値を返すパブリックプロパティを持っています。私の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はfalse」
を返します。使用したとき:
if ('<%#editMode()%>') ...
.
まだ常にfalseですが、IF状態になりますので、動作は常に真実だったかのようです。
他のもう1つのことは、私が見つけたほとんどのJavaScript / Serverタグのものは <%= editmode%> を使用することを言うが、代わりに=代わりに使用することはできません。 #は例外を取得します:
"コントロールコレクションはできません コントロールに含まれているので変更しました コードブロック(すなわち<%...%>)。 "
だから私は#を使って
を言うことによってこれを解決しました Page.Header.DataBind()
Page.Form.DataBind()
.
ページロードイベントハンドラ
任意のアイデア?前もって感謝します。 :)
(私は通常C#を使っているので、私はVB部門で無意識のうちに行ったことがあるかもしれませんので、それも自由に感じてください)
解決 2
これは私がエラーを解決するのを助けました。 "コントロールコレクションは変更できません。コントロールにコードブロックが含まれています "
JavaScript機能を頭から移動し、体内に移動すると問題が解決されます。この問題を引き起こす可能性があることがいくつかあるようですが、私の場合、最も可能性の高いCulpritはAjaxToolkitです。
他のヒント
最初に、これに変更してみてください:
<%=editMode()%>
.
それがそれであるかどうかわからないが、それは傷つくことはできません。次に、最初にページをロードしたときに編集モードになっていますか?そのコードはサーバー側を実行して結果をユーザーに返します。
ユーザーのページでは、それらが表示されます。
function validateEdit()
{
alert("editMode value is " + 'False');
if ('False'.toString() == "True")
{
alert("You are currently in edit mode. Please save or cancel changes.");
return false;
}
return true;
}
.
もう一度、それがそうでないかどうかわからないが、JavaScriptがサーバーへの呼び出しを行わないことを理解することが重要です。
もう一つのこと。
あなたは
を使って文字列を別の文字列に変換していることを認識しています'<%#editMode()%>'.toString()
.
右λ
あなたが欲しいものはこれが
だと思いますif ('<% =editMode.toString() %>'= 'True')...
.
またはより良いまだ
if (<% =editMode.toString().ToLower() %>)...
.