Как установить URL изображения с помощью POST в коде позади на странице ASPX
private void DisplayImages(string imageFile)
{
Image pImage = new Image();
pImage.ImageUrl = imageFile;
this.Controls.Add(pImage);
}
Выше приведен текущий код, но изображение не отображается, и я хочу проверить значение URL. У меня есть функция JavaScript, которая будет проверять URL и возвращать URL. Все, что мне нужно сделать, это назначить URL-адрес, возвращенный из javascript вышеупомянутому изображению, используя то, что называется POST. Как я могу добиться этого в коде в функции выше?
Пожалуйста, предложите.
Обновление 1: я забыл добавить "this.Controls.Add(pImage);". Я добавил выше.
Обновление 2: я создаю элемент управления изображением (как показано в коде) во время загрузки страницы. URL для этого обычно длиннее и происходит из XML. Я напечатал значение URL-адреса, прежде чем присвоить элемент управления изображением.
Теперь по какой-то причине изображение не отображается в браузере. Только сейчас я обнаружил, что даже этот URL при отображении в отдельном браузере дает мне HTTP 403. Человек, который создал этот URL и сохранил в XML, говорит мне, что я должен использовать Javascript и выполнить POST, отправив этот URL. Мне нужно знать, как я могу сделать JavaScript в приведенном ниже коде, чтобы URL-адрес изображения был назначен после метода POST. Надеюсь, это проясняет.
Обновление 3: Ниже приведен Javascript на странице ASPX.
<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 ответ
Нет никакой разницы в том, как вы получаете свой URL и устанавливаете его в элемент управления Image, используя javascript и отправку обратного URL не имеет смысла, так как вы уже получили этот URL на стороне сервера, и вам просто нужно установить его в элемент управления Image, предполагая, что URL действителен. Первое, что вы должны сделать, это проверить, что URL действителен, просто вставьте его в браузер и посмотрите, работает ли он, если нет, то вам следует поговорить с тем человеком, который предоставит вам этот URL.
Кстати. не создавайте элемент управления изображениями на лету, создайте его в разметке и присвойте свойство ImageUrl в методе DisplayImages, если вы должны динамически создавать ImageControls, делайте это в OnInit.
Обновление 3 комментария:
хорошо, IMO, это безумие, пожалуйста, не обижайтесь:) но, как я вижу, этот javascript изменяет исходный URL, который вы получаете из XML, я думаю, что лучшее, что вы можете сделать, - это продублировать этот код Javascript на C#, например. сделать то же самое с URL только на стороне сервера с C#.
Проблема в том, что вы генерируете свою страницу на сервере, которая включает в себя URL-адрес для управления изображением, и после того, как вы сгенерировали целую страницу на сервере, выполняется javascript, а затем уже поздно изменить URL-адрес управления изображением. Может быть, эта публикация на сервере подходит для некоторых сценариев, но не для вас.
Еще одно обновление
Что ж, Анируд, после более внимательного изучения этого javascript кажется, что вы пытаетесь использовать сервис генерирования изображений и должны опубликовать параметры в их сервисе, и он будет возвращать URL для изображения, сгенерированного на основе параметров, которые вы задали в этом URL, верно??
Если это так, то вам действительно стоит написать это, во-первых, видите ли вы, сколько усилий потребовалось для получения этой информации от вас? Пожалуйста, приложите больше усилий, задавая вопросы, и было бы лучше удалить этот вопрос и задать другой, но на этот раз лучше опишите, что вы пытаетесь сделать.