<asp:Repeater ID="rptProducts1" runat="server">
<ItemTemplate>
<div class="product_header">
<asp:Label ID="prodLabels" runat="server" >
<p><h4><%#Eval("Name") %></h4></p>
</asp:Label>
</div>
<div class="left-col">
<div class="img_product">
<asp:Image ID="imgProduct" runat="server" ImageUrl='<%# Eval("Picture") %>' Width="200px" Height="200px"/>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
Code Behind:
List<ProductModel> _prodObj = new List<ProductModel>();
_prodObj = response.Content.ReadAsAsync<List<ProductModel>>().Result;
_prodObj.Where(x => x.PictureId != 0).Select(v => v.Picture = "data:image/png;base64," + Convert.ToBase64String(v.PictureBinary));
var _prodname = _prodObj.Where(x=>x.Id!=0).Select(i => i.Name=""+i.Name);
try
{
rptProducts1.DataSource = _prodname;
rptProducts1.DataBind();
}
catch (Exception ex)
{
throw;
}
从数据库中获取数据时出现问题。想要显示产品的名称和图像。在获取记录时,System.String'不包含属性错误。
提前致谢。
答案 0 :(得分:2)
就我所见,您正在将转发器数据绑定到String
列表。
此行将获取字符串列表:
var _prodname = _prodObj.Where(x=>x.Id!=0).Select(i => i.Name=""+i.Name);
=&GT; _prodname将等于名称列表。
然后,当你进行数据绑定时,你就有了这一行:
Eval("Id")
本质上是说:获取当前对象(这是一个String)并在此处打印Id
属性。但由于它是一个String,它没有ID属性,因此是您的例外。
简而言之:绑定到您要显示的产品列表(完整对象,而不仅仅是名称),或者将视图更改为不使用任何根本不存在的属性。
<强>更新强> 如果您只是想显示一个产品,我建议您在数据绑定控件之前选择正确的产品服务器端,例如:
var _prodname = _prodObj.Where(x=>x.Id!=0 && x.Id == myId).FirstOrDefault().Select(i => i.Name=""+i.Name);
...其中&#34; myId&#34;当然是你正在寻找的身份。
然后,您应该使用转发器来显示数据。您可以使用这样的标签:
<asp:Label ID="myLabel" runat="server" />
// and server side you would do this:
myLabel.Text = _prodName;
答案 1 :(得分:2)
spring-session
我怀疑这是失败的,因为oauth2ClientContext
是prodObj.Where(x=>x.Id!=0)
而不是您期望的那样。
您需要进行一些调试以确定x
的类型,然后追溯以找到它停止的位置。
另外,
string
LINQ被懒惰地评估,除非枚举上述表达式的结果,否则将不执行任何操作。