-1

我有一个表单视图,其中有一个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.

我哪里错了?谢谢

4

1 回答 1

0

可以调试吗?当对象为空并且您尝试从中调用某些内容时,会出现此错误。通过检查您的 conn 字符串 imageAuthor 是否也可以为空来查看 conn 是否正常...尝试从“(Image)ListStories 中删除“as Image” .FindControl("ImageAuthor") as Image" 您已经将其转换为 Image,不需要 "as" "as Image" 提高了对象为空的机会

于 2013-06-26T16:01:44.217 回答