0

asp.netサーバーからjavascriptに変数を渡すつもりですが、例外が発生しました。

「シリアライザー」という名前は、私のAdmin.aspx.csの現在のコンテキストには存在しません

 protected static string urlEdit;
    protected void Page_Load(object sender, EventArgs e)
    {
        // blah blah...
        var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    }

次に、マークアップコードで:

<script type="text/javascript">
            function Edit_Click() {
                var options = SP.UI.$create_DialogOptions();


                options.url = <%= serializer.Serialize(urlEdit) %>;

                              };
4

5 に答える 5

1

javascriptが文字列として表示するように、引用符で囲んでみてください...

options.url = '<%= serializer.Serialize(urlEdit) %>';

あなたのコードはレンダリングします...

options.url = site.com/url;//invalid javascript

私がレンダリングするように...

options.url = 'site.com/url';//valid javascript
于 2012-04-04T16:08:41.283 に答える
1

serializerにのみ存在しPage_Loadます。マークアップからシリアライザーにアクセスする代わりに、シリアル化された値を返すパブリックメソッドまたはプロパティを作成してみませんか?

protected static string urlEdit;
protected void Page_Load(object sender, EventArgs e)
{
    // blah blah...
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
}

public string GetSerializedUrl()
{
    return serializer.Serialize(urlEdit);
}

次に、マークアップでこのメソッドを呼び出します。

options.url = "<%= GetSerializedUrl() %>";

アップデート

実際には...javascriptを使用するために文字列をシリアル化する必要はありません。したがって、コードは次のように簡略化できます。

protected static string urlEdit = "www.example.com";

そして、簡略化されたマークアップ:

options.url = "<%= urlEdit  %>";
于 2012-04-04T16:29:46.520 に答える
0

serializerPage_Load関数内にのみ存在します。インラインコードがそれを認識するためには、classes名前空間で宣言する必要があります。

protected static string urlEdit;
protected var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
protected void Page_Load(object sender, EventArgs e)
{
}

musefanは、options.urlを引用符で囲む必要があることも正しいです。

于 2012-04-04T16:23:30.763 に答える
0

通常、変数をシリアル化する代わりに、この値を使用して値をjavaScriptに挿入します

ClientScript.RegisterClientScriptBlock(this.GetType(), "variable", "<script language=javascript> var variableUrl='" + urlEdit+"' </script>");

このコードブロックは、ページのloadメソッドに含まれている必要があることに注意してください

次に、スクリプトで、次のような変数を使用できます

    <script type="text/javascript">
        function Edit_Click() {
            var options = SP.UI.$create_DialogOptions();


            options.url = variableUrl;

                          };
于 2012-04-04T16:27:43.893 に答える
-2

個人的には、隠しフィールドを利用して仕事をするのは簡単だと思います。

すなわち

マークアップ(.aspx)

<asp:HiddenField ID="hiddenRequest" runat="server" ClientIDMode="Static" />

コードビハインド(.aspx.cs)

hiddenRequest.value = "Test!";
string test = (string)hiddenRequest.value;

jQueryを使用したJavascript(簡単に選択可能)(。js)

$('#hiddenRequest').val('Test!');
var test = $('#hiddenRequest').val();
于 2012-04-04T16:14:26.523 に答える