我在aspx页面上有一个网格
<asp:GridView ID="gvmails" runat="server"></asp:GridView></div>
并希望从List<ContactDetail>
这是ContactDetail
类
public class ContactDetail
{
public string Name { get; set; }
public string EmailAddress1 { get; set; }
public string EmailAddress2 { get; set; }
public string Phone { get; set; }
public string Details { get; set; }
public System.Drawing.Image Pic { get; set; }
}
在按钮上单击我想绑定此网格。所有的东西都在网格中正确显示,除了pic。 这是我的服务器端代码
public static List<ContactDetail> GetGmailContacts(string App_Name, string Uname, string UPassword)
{
RequestSettings rs = new RequestSettings(App_Name, Uname, UPassword);
rs.AutoPaging = true;
ContactsRequest cr = new ContactsRequest(rs);
Feed<Contact> f = cr.GetContacts();
List<ContactDetail> contactDetails = new List<ContactDetail>();
foreach (Contact entry in f.Entries)
{
ContactDetail contact = new ContactDetail
{
Name = entry.Name.FullName,
EmailAddress1 = entry.Emails.Count >= 1 ? entry.Emails[0].Address : "",
EmailAddress2 = entry.Emails.Count >= 2 ? entry.Emails[1].Address : "",
Phone = entry.Phonenumbers.Count >= 1 ? entry.Phonenumbers[0].Value : "",
Details = entry.Content,
Pic = GetPic(cr, entry)
};
contactDetails.Add(contact);
}
return contactDetails;
}
private static System.Drawing.Image GetPic(ContactsRequest cr, Contact entry)
{
try
{
if (!string.IsNullOrEmpty(entry.Name.FullName))
{
return System.Drawing.Image.FromStream(cr.Service.Query(entry.PhotoUri));
}
}
catch (Exception)
{
}
return null;
}
protected void Button1_Click(object sender, EventArgs e)
{
List<ContactDetail> ds = GetGmailContacts("MyNetwork Web Application!", txtgmailusername.Text, txtpassword.Text);
gvmails.DataSource = ds;
gvmails.DataBind();
}
即使是上一篇专栏图片也未出现。请告诉我遗漏的地方,以网格视图显示图片。
答案 0 :(得分:0)
您无法直接将图像渲染为HTML [1]。 Web页面通常由多个资源组成,图像包含在<img src="" />
元素中,其中src=""
属性指定图像的资源路径。当您动态提供图像时,意味着您需要为图像提供单独的处理程序。您可以使用.ashx
文件执行此操作。
我担心我的WebForms有点生疏(因为我非常喜欢ASP.NET MVC)但是改变你的GridView的ViewModel来为图像提供URI而不是位图数据(你和# 39;顺便说一下,忘记.Dispose()
,然后您需要提供一个自定义TemplateField
,将<img src=
写入回复正文。
之后,您需要为图像本身实现.ashx
处理程序。
[1]是的,从技术上讲,您可以使用data:
URI,但它们适用于图标等小图片,而不是照片等大型内容。