Я пытаюсь связать изображение с помощью Eval()
с VB.NET и ASP.NET, но у меня проблемы:
<bri:ThumbViewer Id="Th1" runat="server"
ImageUrl='<%# Eval("Name", "~/SiteImages/ram/3/{0}") %>'
Height="100px"
Width="100px"
/>
Я установил strImagePath
в code-behind как:
strImagePath ="~/SiteImages/ram/3/"
Как я могу заменить:
~/SiteImages/ram/3/{0}
с переменной strImagePath
?
просто используйте
<asp:Image id="abc" ImageUrl =<%# string.Format("~/SiteImages/ram/3/{0}",Eval("imagepath"))%>
путь изображения может быть от datatable или cs
Я лично предпочитаю делать эти вещи в коде, прямо как
<bri:ThumbViewer ID="thumbViewer" runat="server" ... />
а затем в codebehind у вас есть некоторый метод initialize или DataBind(), где вы пишете
thumbViewer.ImageUrl= Path.Combine(ImagePath, Name); //or something similar, you have to check
Это потому, что, особенно когда вы разрабатываете команду, это довольно неудобно и подвержено ошибкам, если люди делают некоторые привязки в коде ASPX напрямую, используя Eval (...), а некоторые - в codebehind. Я предпочитаю использовать codebehind, потому что тогда вы сразу видите, что происходит на странице, просто просматривая свой код, в то время как ваш код ASPx предназначен только для макета, определения элементов управления (со свойствами) и т.д.
Можете ли вы просто написать (и простить меня, если это не так), если оно постоянное:
<bri:ThumbViewer ImageUrl='~/SiteImages/ram/3/<%# Eval("Name")%>' Height="100px" Width="100px" Id="Th1" runat="server"/>
И если это не так:
<bri:ThumbViewr ImageUrl='<#Eval("ImagePath + Name") %>' ... />
//And in your codebehid:
public property ImagePath { get; set; }
...
ImagePath = "...";
string strImagePath = "aPage.aspx";
string pathFormat = "~/SiteImages/ram/3/{0}";
string path = String.Format(path, strImagePath);
Это немного многословно, но вы поняли эту идею. То, что вы ищете, это метод String.Format.
Вы можете узнать больше об этом в MSDN → String.Format
Итак, в вашем случае это будет:
<bri:ThumbViewer Id="Th1" runat="server" ImageUrl='<%# Eval("Name", String.Format("~/SiteImages/ram/3/{0}", strImagePath)) %>' Height="100px" Width="100px"/>
, пока strImagePath
установлен в public
или protected
в вашей кодовой строке