-1
private void DisplayImages(string imageFile)
{
        Image pImage = new Image();
        pImage.ImageUrl =  imageFile;
        this.Controls.Add(pImage);

}

上記は現在のコードですが、画像が表示されないため、URL 値を確認したいと考えています。URLをチェックしてURLを返すJavaScript関数があります。私がする必要があるのは、POST と呼ばれるものを使用して、javascript から返された URL を上の画像に割り当てることだけです。上記の関数の分離コードでこれを達成するにはどうすればよいですか?

提案してください。

更新 1:「this.Controls.Add(pImage);」を追加するのを忘れていました。上に追記しました。

更新 2: ページの onLoad 中にイメージ コントロール (コードに示すように) を作成しています。この URL は通常より長く、XML から取得されます。画像コントロールに割り当てる前に URL 値を出力しました。

何らかの理由で、画像がブラウザでレンダリングされません。たった今、その URL を別のブラウザーでレンダリングすると HTTP 403 になることがわかりました。その URL を作成して XML に保存した人は、Javascript を使用し、この URL を送信して POST を実行する必要があると教えてくれました。POST メソッドの後に画像 URL が割り当てられるように、以下のコードで JavaScript を実行する方法を知る必要があります。これが明確になることを願っています。

更新 3 : 以下は ASPX ページの Javascript です。

    <script type="text/javascript">
        // Open URL in new window with a a post instead of the get
        function posturl(url) {
            alert("I am here");
            var qsBegin = url.indexOf("?");
            var qsPattern = new RegExp("[?&]([^=]*)=([^&]*)", "ig");
            var match = qsPattern.exec(url);
            var params = new Array();

            while (match != null) {
                // matched text: match[0]
                // match start: match.index
                // capturing group n: match[n]
                var matchID = match[1];
                if ( matchID.charAt(0) == "&" ) {
                    matchID = matchID.substr(1);
                }

                if ( params[match[1]] != null && !(params[match[1]] instanceof Array) ) {
                    var subArray = new Array();
                    subArray.push(params[match[1]]);
                    subArray.push(unescape(match[2]));
                    params[match[1]] = subArray;
                } else if ( params[match[1]] != null && params[match[1]] instanceof Array ) {
                    params[match[1]].push(unescape(match[2]));
                } else {
                    params[match[1]]=unescape(match[2]);
                }   
                match = qsPattern.exec(url);
            }

            var myForm = document.createElement("form");
            //myForm.setAttribute("target", "_blank");
            myForm.method="post" ;
            myForm.action = url.substring(0,qsBegin) ;
            for (var k in params) {
                var myInput;
                // Check for params with the same name.
                if ( params[k] instanceof Array ) {
                    for ( var i=0; i<params[k].length; i++ ) {
                        myInput = createFormInput(k, params[k][i]);
                        myForm.appendChild(myInput) ;
                    }
                } else {
                    myInput = createFormInput(k, params[k]);
                    myForm.appendChild(myInput);
                }
            }

            document.body.appendChild(myForm) ;
            myForm.submit() ;
            document.body.removeChild(myForm) ;
            //return "did you get what you wanted";
        }
</script>
4

1 に答える 1

1

URL を取得してイメージ コントロールに設定する方法に違いはありません。javascript を使用して URL をポストバックしても意味がありません。その URL はサーバー側で既に取得しており、それをイメージ コントロールに設定する必要があるためです。 URL は有効です。最初に行うべきことは、URL が有効であることをテストすることです。ブラウザに貼り付けて動作するかどうかを確認してください。動作しない場合は、その URL を提供した人に相談する必要があります。

ところで。その場でイメージ コントロールを作成しないでください。マークアップで作成し、DisplayImages メソッドで ImageUrl プロパティを割り当てます。ImageControls を動的に作成する必要がある場合は、OnInit で行います。

3 コメントを更新します。

まあ、IMOは正気ではありませんが、気分を害しないでください:)しかし、このjavascriptがXMLから取得した元のURLを変更することがわかるので、できる最善のことは、そのJavascriptコードをc#で複製することだと思います。C# を使用して、サーバー側でのみ URL に対して同じことを行います。

これに関する問題は、画像コントロールの URL を含むページをサーバー上で生成していて、サーバー上でページ全体を生成した後、javascript が実行され、画像コントロールの URL を変更するのが遅すぎることです。たぶん、このポストイットサーバーアプローチはいくつかのシナリオには適していますが、あなたのシナリオには適していません.

別のアップデート

Anirudh、その JavaScript を詳しく調べたところ、画像生成サービスを使用しようとしているようで、そのサービスにパラメータを送信する必要があり、その URLで設定したパラメータに基づいて生成された画像の URL が返されます。 ?

もしそうなら、そもそもそれを書くべきだとしたら、あなたからその情報を引き出すのにどれだけの労力が必要だったか分かりますか? 質問にもっと力を入れてください。この質問を削除して別の質問をするのが最善ですが、今回は何をしようとしているのかをよりよく説明してください。

于 2012-05-23T11:56:20.040 に答える