【发布时间】: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