2017-05-15 31 views
0

我在C#中有此代碼。C#servercode到VB

<asp:Image runat="server" ID="imgScreenshot" ImageUrl="<%#"data:Image/png;base64," + Convert.ToBase64String((byte[])Eval("Screenshot")) %>" 

它將varbinary圖像轉換爲img並顯示它。這在C#中完美運行,但無法在我的VB.net項目中運行。 「獲得

」服務器代碼沒有正確編碼「。

任何人都可以幫我把它轉換爲VB嗎?

+0

我懷疑這工作在C#因爲它會抱怨報價一樣。在你的屬性'ImageUrl =「...」'裏面,你需要使用單引號(或者在外面並使用雙引號)。 – Filburt

+2

好吧,'ImageUrl'屬性會觸發'服務器標記不是格式良好'的問題,因爲在其他雙引號中使用雙引號。你只能在'<%...%>'內使用雙引號,並使用'String.Format'來連接字符串和雙引號。 –

回答

1

在vb.net中「&」是串聯運算符,而數組使用括號「()」而不是括號「[]」定義。另外,類型轉換語法有點不同。

我相信這將是從C#到VB.net轉換:

ImageUrl='<%#"data:Image/png;base64," & Convert.ToBase64String(CType(Eval("Screenshot"), Byte()))%>' 

或者在評論中提到可以使用string.format方法:

ImageUrl='<%# String.Format("data:Image/png;base64,{0}", Convert.ToBase64String(CType(Eval("Screenshot"), Byte())))%>' 
+0

嗨,謝謝。第一個工作很好,但String.format不工作只是爲了說明。 –

+0

@LukeRemming好的,我會修復它,並更新答案。我沒有實際測試這些。 :) – Popo

+1

@LukeRemming我用正確的語法做了更新,但無法使string.format在本地使用內聯標籤工作。既然你只是連接兩個字符串,'&'應該沒問題。 – Popo