我对 ASP.Net 很陌生,我不确定我是否以正确的方式进行。我有一个绑定到“图像”对象列表的中继器。每个RepeaterItem 中都有一个复选框,我有一个按钮OnClick 事件,我想显示选中的Image 对象的一些属性。
标签更新,但元数据为空白。DataBinder.Eval(i.DataItem, "FileName") 返回 null,但我不知道为什么?我认为复选框的回发可能会导致问题,但如果我尝试在任何回发发生之前显示数据,我仍然会遇到同样的问题,所以也许我没有正确获取属性。还是我以完全错误的方式解决这个问题?任何帮助表示赞赏。
代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
string importPath = Server.MapPath("~/Images/ForImport");
ImageProcessor processor = new ImageProcessor(importPath);
rptImageList.DataSource = processor.ImageList;
rptImageList.DataBind();
}
}
protected void btnImport_Click(object sender, EventArgs e)
{
foreach (RepeaterItem i in rptImageList.Items)
{
CheckBox chk = i.FindControl("chkSelectImage") as CheckBox;
if (chk.Checked)
{
Testlabel.Text += "Selected: " + DataBinder.Eval(i.DataItem, "FileName");
}
}
}
HTML:
<asp:Repeater ID="rptImageList" runat="server">
<ItemTemplate>
<div class="photoinstance">
<asp:Image runat="server" ImageUrl='<%#"Images/ForImport/" +DataBinder.Eval(Container.DataItem, "FileName") %>' />
<asp:CheckBox ID="chkSelectImage" AutoPostBack="true" runat="server"/>
<p><%#Eval("FileName")%> - <%#Eval("FileSize")%> bytes</p>
</div>
</ItemTemplate>
</asp:Repeater>