如何在ASPX页面后面的代码中使用POST设置图像的URL

时间:2012-05-22 22:54:59

标签: javascript asp.net forms post imageurl

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>

1 个答案:

答案 0 :(得分:1)

没有什么区别如何获取您的URL并将其设置为Image控件,使用javascript并回发URL没有意义,因为您已经在服务器端获得了该URL,您应该将其设置为Image控件,假设URL有效。你应该做的第一件事是测试URL是否有效,只需将其粘贴到浏览器中,看看它是否有效,如果没有,你应该与那个为你提供该URL的人交谈。

顺便说一句。不要动态创建图像控件,在标记中创建图像控件并在DisplayImages方法中指定ImageUrl属性,如果必须在OnInit中创建ImageControls,请执行此操作。

更新3条评论:

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

问题在于您在服务器上生成页面,其中包含用于图像控制的URL,上生成服务器上的整个页面然后执行javascript,然后更改Url图像控制。也许这个贴到服务器aproach的帖子对某些情况有好处,但不是你的。不过

另一次更新

好的Anirudh,在更多地了解这个javascript之后,您似乎正在尝试使用图像生成服务,并且您必须将参数发布到他们的服务中,它将返回基于您在其中设置的参数生成的图像的URL那个网址,是吗?

如果是这样,你应该首先写下,你是否看到从中提取信息需要多少努力?请投入更多精力提出问题,最好删除这个问题并询问另一个问题,但这一次更好地描述了你想做什么。