【问题标题】:How to set url of an image using POST within code behind in ASPX page如何在 ASPX 页面后面的代码中使用 POST 设置图像的 url
【发布时间】:2012-05-22 22:54:58
【问题描述】:
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>

【问题讨论】:

  • 在我的回答下有一大堆澄清 - 先阅读它们
  • 你已经问过这个问题了。请不要发布重复。 Need to display image in ASPX page that has long url备案:这里不能使用“POST”不能; HTML img 标签将通过get 发出请求。你不能改变它。您应该永远不必这样做。
  • @AndrewBarber:感谢您的更新,很抱歉重复发帖,但我想在这里提出特定于 POST 的问题。那么为了使用 POST,我需要进行哪些更改。有人告诉我这是显示 imageUrl 的唯一希望。再次抱歉。
  • 有人错误地告诉你,对 HTML 和浏览器的工作原理一无所知。
  • @Anirudh,你真的不清楚你想做什么,忘记别人告诉你的,描述你在做什么,因为这样没人能理解你在说什么。

标签: javascript asp.net forms post imageurl


【解决方案1】:

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

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

更新 3 个 cmets:

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

问题在于您正在服务器上生成页面,其中包括用于图像控制的 URL,您在服务器上生成整个页面之后,然后执行 javascript,然后更改 URL 为时已晚的图像控制。也许这个发布到服务器的方法适用于某些场景,但不适合你的场景。

另一个更新

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

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

【讨论】:

  • :感谢您的输入。不知道该说什么,但另一个供应商说我必须通过 Javascript 来做。他给了我 javascript 代码,我将原始帖子粘贴为 Update3。同时,我想向他表明这行不通。但要做到这一点,我需要调用这个 javascript 函数,以便将其分配给 imageUrl。请建议如何将其合并并展示给他。再次,我想向他排除这件事可能行不通,但他需要证据。我只有这个选择来告诉他 URL 哪里错了。 – Anirudh 11 分钟前
  • 您是否建议我对 ASPX 页面或代码进行任何更改,以实现我想要的。我知道您提到我使用服务器代码验证 URL,但这有帮助吗?如果 Javascript 似乎可以工作,我需要做哪些更改?很抱歉再次询问 Javascript,但我正在写信给其他供应商,说 Javascript 选项将不起作用,我想确保没有替代方案等来修改 ASPX 或代码隐藏以使 javascript 工作。感谢您的理解。
  • 是的,正如我所说,您应该在服务器端复制该 Javascript,C# 代码在后面。对于javascript解决方案,我会更新我的答案。
  • 我已经发布了单独的问题。请让我知道你的看法。 stackoverflow.com/questions/10745952/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多