从数据库中检索表单视图中的图像

时间:2013-06-26 15:56:02

标签: c# asp.net sql-server

我有一个表单视图,其中有一个asp:Image控件:

<asp:FormView runat="server" ID="ListStories" DefaultMode="ReadOnly" >
<ItemTemplate>
<table>
<tr><td><%#Eval("Subject") %></td></tr>
<tr><td><%#Eval("Story") %></td></tr>
<tr><td><%#Eval("UserName")%></td></tr>
<tr><td><asp:Image ID="ImageAuthor" runat="server"  /></td></tr>
</table>
</ItemTemplate>

</asp:FormView>

我正在尝试从代码后面设置ImageUrl属性,如下所示:

Image imageAuthor = (Image)ListStories.FindControl("ImageAuthor") as Image;
        conn = new SqlConnection(connString);
        cmdStories = new SqlCommand("SELECT Stories.UserName, Stories.Subject, Stories.Story, UserProfile.Photo FROM Stories INNER JOIN UserProfile ON Stories.UserName=UserProfile.UserName", conn);
        conn.Open();
        reader = cmdStories.ExecuteReader();
        while (reader.Read())
        {
            string userName = reader["UserName"].ToString();
            imageAuthor.ImageUrl = "~/ImageHandler.ashx?name"+userName ;
        }
        ListStories.DataSource = reader;
        ListStories.DataBind();
        conn.Close();

但它给了我一个错误:

Object reference not set to an instance of an object.

我哪里出错了? 感谢名单

1 个答案:

答案 0 :(得分:0)

你可以调试吗? 当一个对象为null并且您尝试从中调用某些内容时,会显示此错误。 通过检查conn字符串来查看conn是否正常 imageAuthor也可以为null ... 尝试从“(Image)ListStories.FindControl(”ImageAuthor“)中删除”as Image“作为Image” 你已经将它投射到Image,不需要“as” “as Image”提升了对象为null的机会