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

}

以上是当前代码,但图像未显示,我想检查 URL 值。我有一个 javascript 函数,它将检查 URL 并返回 URL。我需要做的就是使用所谓的 POST 将从 javascript 返回的 URL 分配给上面的图像。如何在上述函数的代码隐藏中实现这一点?

请建议。

更新 1:我忘了添加“this.Controls.Add(pImage);”。我已经在上面添加了。

更新 2:我在页面的 onLoad 期间创建图像控件(如代码所示)。此 URL 通常较长,并且来自 XML。我在分配给图像控件之前打印了 URL 值。

现在由于某种原因,图像不会在浏览器中呈现。刚才我发现即使是在单独的浏览器中呈现的那个 URL 也会给我 HTTP 403。构建那个 URL 并存储在 XML 中的人告诉我应该使用 Javascript 并通过发送这个 URL 来做一个 POST。我需要知道如何在下面的代码中执行 javascript,以便在 POST 方法之后分配图像 URL。希望这可以澄清。

更新 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 并将其设置为 Image 控件没有任何区别,使用 javascript 并回发 URL 没有任何意义,因为您已经在服务器端获得了该 URL,您应该将其设置为 Image 控件,假设网址有效。您应该做的第一件事是测试该 URL 是否有效,只需将其粘贴到浏览器中并查看它是否有效,否则您应该与为您提供该 URL 的人交谈。

顺便提一句。不要动态创建图像控件,在标记中创建它并在 DisplayImages 方法中分配 ImageUrl 属性,如果您必须在 OnInit 中动态地创建 ImageControls。

更新 3 条评论:

好吧,IMO 这太疯狂了,请不要冒犯:) 但是我可以看到这个 javascript 改变了你从 XML 获得的原始 URL,我认为你能做的最好的事情就是在 c# 中复制那个 Javascript 代码,例如。仅在服务器端使用 C# 对 URL 执行相同的操作。

问题在于您正在服务器上生成您的页面,其中包括用于图像控制的 URL,并且您在服务器上生成整个页面之后,然后执行 javascript,然后更改图像控制的 Url 为时已晚。也许这个发布到服务器的方法对某些情况有好处,但对你的情况不太好。

另一个更新

好吧,Anirudh,在查看了更多该 javascript 之后,您似乎正在尝试使用图像生成服务,您必须将参数发布到他们的服务,它会返回基于您在该 URL 中设置的参数生成的图像的 URL,是吗? ?

如果是这样,您真的应该首先写下它,您知道从您那里提取这些信息需要付出多少努力吗?请投入更多的精力来提问,最好删除这个问题并问另一个问题,但这次更好地描述你想要做什么。

于 2012-05-23T11:56:20.040 回答