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

} 

上面是當前代碼,但圖像沒有顯示,我想檢查URL值。我有一個JavaScript函數將檢查URL並返回URL。我需要做的就是使用稱爲POST的方式將JavaScript返回的URL分配給上面的圖像。在上面的函數中如何在代碼隱藏中實現這一點?如何在ASPX代碼中使用POST代碼設置url的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> 
+0

在我的答案下有一整套的澄清 - 先閱讀它們 –

+0

您已經提出過這個問題。請不要發佈重複。 [需要在ASPX頁面中顯示具有長URL的圖像](http://stackoverflow.com/questions/10709044/need-to-display-image-in-aspx-page-that-has-long-url)記錄:「POST」*不能*在此使用; HTML'img'標籤將*只*通過'get'發出請求。你不能改變這一點。你應該*永遠不必*。 –

+0

@AndrewBarber:感謝您的更新並對雙後的抱歉,但我想在這裏問與特定問題POST。那麼,爲了使用POST,我需要做些什麼改變。我被告知這是顯示imageUrl的唯一希望。再次抱歉。 – Anirudh

回答

1

有你如何讓你的URL,並將其設置爲Image控件,使用JavaScript和回髮網址是沒有意義的,因爲你得到了URL媒體鏈接上服務器端沒有區別的,你應該只設置到Image控件,假定URL是有效的。你應該做的第一件事就是測試這個URL是否有效,只需將它粘貼到瀏覽器中,看看它是否有效,如果不是,你應該與提供該URL的那個人交談。

btw。不要動態創建圖像控件,在標記中創建圖像並在DisplayImages方法中分配ImageUrl屬性,如果必須在OnInit中創建ImageControls,請按照這種方法進行。

更新3個評論:

好,IMO這是瘋了,請沒有進攻:)但我可以看到這個JavaScript改變你從XML獲得原始URL,我認爲最好的事情,你可以做的是在c#中複製該Javascript代碼,例如。使用C#在服務器端對URL進行同樣的操作。

問題在於,您正在服務器上生成您的頁面,其中包含圖像控制的URL,而之後您在服務器上生成整個頁面,然後執行javascript,然後更改爲更改圖像控件的Url。也許這張貼到服務器aproach是有益的一些情況,但surley不適合你的。

另一個更新

好Anirudh,尋找更多的JavaScript似乎您試圖使用圖像生成服務,你必須張貼參數,他們的服務,它會返回網址生成圖像後基於你設置在URL中的參數,是嗎?

如果是這樣的話,那麼您應該首先將其寫入,您是否看到需要付出多少努力才能從中提取這些信息?請投入更多精力來提問,最好刪除這個問題並詢問另一個問題,但這次更好地描述你想要做什麼。

+0

:感謝您的意見。不知道該說些什麼,但其他廠商說我必須通過Javascript來完成。他給了我javascript代碼,我粘貼我的原始帖子爲Update3。同時我想告訴他,它不會工作。但要做到這一點,我需要調用這個JavaScript函數,以便它被分配給imageUrl。請建議如何合併並顯示給他。再一次,我想排除他這件事可能行不通,但他需要證明。我只有這個選擇才能向他顯示網址錯誤的地方。 - Anirudh 11分鐘前 – Anirudh

+0

更新了我的回答 –

+0

您是否建議對ASPX頁面或代碼進行任何更改以實現我在尋找的內容。我知道你提到我使用服務器代碼驗證URL,但這會有幫助嗎?如果Javascript似乎有效,我需要做些什麼改變?很抱歉再次詢問Javascript,但是我正在向另一個供應商寫信,說明Javascript選項不起作用,我想確保沒有替代品等來修改ASPX或代碼隱藏以獲得JavaScript工作。感謝你的理解。 – Anirudh