ListView + ItemTemplate条件绑定

时间:2013-01-15 20:31:43

标签: c# asp.net listview

我有一个列表视图,其中一个是绑定我的用户的照片图像。但是,如果<%#Eval(“Photo”)%>是一个空值,这意味着用户尚未上传照片,我想显示路径为

的默认值
ConfigurationManager.AppSettings["USER_DEFAULTPROFILEPHOTO_PATH"]%>

这是这里的一行,它不会抛出任何错误,但现在图像都是空白的。有人可以帮忙吗?感谢。

<a href="ProfilePage.aspx?user=<%#Eval("UserName") %>" target="_parent"><img src="<%#Eval("Photo") %> != null ? <%= ConfigurationManager.AppSettings["USER_PROFILEPHOTO_PATH"]%>/<%#Eval("UserName") %>/<%#Eval("Photo") %> : <%= ConfigurationManager.AppSettings["USER_DEFAULTPHOTO_PATH"]%>" class="tipTip" title="<%#Eval("Name") %>" style="border: 1px solid #B6B6B6; height: 55px; width: 50px" alt=""></a>

1 个答案:

答案 0 :(得分:1)

您的源绑定不正确,请尝试以下操作:

<强> ASPX:

<asp:ListView ID="lvImages" runat="server">
    <ItemTemplate>
        <img alt="profilePic" style="width: 30px; height: 30px;" runat="server" src='<%# Eval("Photo") != null ? String.Format("{0}\\{1}\\{2}",ConfigurationManager.AppSettings["USER_PROFILEPHOTO_PATH"].ToString(),Eval("UserName"),Eval("Photo")) : ConfigurationManager.AppSettings["USER_DEFAULTPHOTO_PATH"].ToString() %>' />
    </ItemTemplate>
</asp:ListView>

代码背后(在我身边重新进行测试):

public partial class Home : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            lvImages.DataSource = new List<MyImage>
            {
                new MyImage{UserName="Deni",Photo="pic1.jpg"},
                new MyImage{UserName="Chad",Photo="pic2.jpg"},
                new MyImage{Photo=null},
            };
            lvImages.DataBind();
        }
    }
}

public class MyImage
{
    public string UserName { get; set; }
    public string Photo { get; set; }
}

网站的图片结构:

enter image description here

Web.config:

  <appSettings>
    <add key="USER_PROFILEPHOTO_PATH" value="~/Images"/>
    <add key="USER_DEFAULTPHOTO_PATH" value="~/Images/pic3.png"/>
  </appSettings>