7

ページをロードするときに、サーバー側の変数からjavascript関数に値を渡します。

私はそれを機能させることができないようですこれは私が持っているものです:

Asp.Net

protected void Page_Load(object sender, EventArgs e)
{
    string blah="ER432";
}

Javascript

<script type="text/javascript">

    var JavascriptBlah = '<%=blah%>';

    initObject.backg.product_line = JavascriptBlah;

</script>

これをページに追加する

 public string blah { get; set; }


        protected void Page_Load(object sender, EventArgs e)
        {
           blah="ER432";
        }

まだエラーが発生します:CS0103:名前'blah'は現在のコンテキストに存在しません

また、hddenフィールドを使用せずにこれを達成したいと思います

4

6 に答える 6

12

これを行うには、C#変数がクラスメンバーである必要があると思います。のローカル変数ではなく、クラスレベルで宣言してみてくださいPage_Load()。page_loadが終了すると、明らかにスコープが失われます。

public partial class Example : System.Web.UI.Page
{
    protected string blah;

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
        //....
于 2012-06-13T18:29:35.700 に答える
3

この特定のケースでblahは、ローカルPage_Loadであり、そのように公開するには、クラスレベルのメンバーにする(おそらくプロパティにする)必要があります。

于 2012-06-13T18:29:49.693 に答える
2

あなたはあなたのhtmlページに隠された入力を置くことができます:

<input  type="hidden" runat='server' id="param1" value="" />

次に、コードビハインドで、.js関数に渡したいものに設定します。

param1.value = "myparamvalue"

最後に、javascript関数は次のようにアクセスできます。

document.getElementById("param1").value
于 2012-06-13T18:35:47.957 に答える
0

blahクラスレベルで宣言する必要があります。

于 2012-06-13T18:29:58.987 に答える
0

内のローカル変数ではなく、クラスのパブリックstring blahプロパティである必要があります。スコーピングについて学ぶ必要があります。PagePage_Load

public class MyPage
{
    public string blah { get; set; }

    protected void Page_Load(object sender, EventArgs e)
    {
        blah = "ER432";
    }
}
于 2012-06-13T18:30:21.597 に答える
0

私が過去に行ったことは、Webformsがその機能として行うことです。つまり、クライアントが必要とする値を格納するための非表示フィールドを作成します。4.0を使用している場合は、隠しフィールドのクライアントIDモードを静的に設定して、物事をよりクリーンに保つことができます。基本的に、非表示フィールドに値を追加します。これは単なるdom要素であるため、javascriptから値を取得するか、値を変更することもできます(戻したい場合)。

変数のように本当にコードを使用したい場合は、クラススコープでアクセスできる必要があります。

于 2012-06-13T18:31:04.007 に答える