2009-07-10 10 views
1

私は自分のサイトでエラーチェックを行うJSで書かれたいくつかの関数を持っています。あるインスタンスでは、DB内の特定のインスタンスが真である場合、2つのチェックを無効にしたいと考えています。C#変数をJSに渡すための最適な方法

私はその後、JSで私は、このチェックを実行したくない私の.aspxの

if (NotANumberCheck(item.GetMember("TotalSpace").Value, 'Space must be Numeric') == false) { return false; } 

でこのような機能を持っているaspx.cs

if (this.exemptcheck == true) { 
    // could set a variable to pass or whatever is optimal here 
} 

上でこのような何かを持っていますthis.examptcheckがtrueを返す場合これを行う最適な方法は何ですか?私は変数を視認できないフィールドに置くことについて聞いてきましたが、それは理想的ではないようです。任意の提案をいただければ幸いです。

おかげ

+0

サイドノート:ブール値を真または偽と明示的にチェックすることは、通常はお勧めしません。ブール値はすでにブール値です。少なくともC#とJSでは、それは問題ではありません。 – OregonGhost

答えて

0

ちょうどあなたの条件が真である場合にのみ、あなたは変数をチェックする必要はありません、あなたのjsの関数を登録します。

C#コード:

if (this.exemptcheck == true) { 
    Page.ClientScript.RegisterStartupScript(Page.GetType(), "KEY", "/* code of your JS function that handle the true case */", true); 
} 
0

あなたは真/偽に変数を設定し、ページ内のスクリプトセクションを書き、その後JSでその変数をチェックすることができます。

2

aspxで、ExemptCheckというメンバー変数を設定します。その後、JSで次のようにします。

var exemptCheck = <% Response.Write(ExemptCheck.ToString()) %>; 

これは、C#変数と同じ値のJS変数を提供します。

+0

私はこれをaspx.csに持​​っています プライベートvoid pageSetup(EventArgs args){ ブールexemptCheck; if(dss.ExemptCheck == true){ exemptCheck = true; }} 私はJS 機能onInsert(アイテム){ VAR exemptCheck = <%のResponse.Write(exemptCheck.ToString())に次のように置きます。 %>; } これは私 コンパイラエラーメッセージを次のエラーを与える:CS0103:名「exemptCheck」は現在のコンテキスト には存在しませんが、これはスコープの問題ですか、私は間違って何かをやっていますか? – Splashlin

+0

これは範囲の問題です。 exemptCheckは、pageSetup関数だけでなく、ページオブジェクト全体のメンバ変数である必要があります。 <% %>のコードは、pageSetup関数が終了してからずっと後にページレンダリング機能の実行中に実行されます。 –

0

this.examptcheckがtrueの場合にのみ、javascriptコードをResponse.Write()することができます。

0

私が設定するには、次のコマンドを使用して終了aspx.csコードの値

Page.ClientScript.RegisterStartupScript(this.GetType()、 ""、 "var stackedUnknownExemptCheck = true;");

関連する問題