我试图在异步.Net Web表单页面中绑定ASP Repeater中的用户控件,但将转发器项绑定到用户控件的公共属性失败。
如果我硬编码(而不是绑定)到一个proprty它正确地传递 如果我输出转发器数据项而不传递给用户控制,则输出该值 如果我创建一个新列表并绑定到转发器,即不使用await来获取API调用中的数据,那么绑定属性(Eval(" id"))将通过ok传递给用户控制。
网页代码
protected void Page_Load(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(TaskAsync));
}
private async Task TaskAsync()
{
List<API.Models.Question> questions = await Data.Question.GetQuestions();
QuestionRepeater.DataSource = questions;
QuestionRepeater.DataBind();
GridView1.DataSource = questions;
GridView1.DataBind();
}
页面前端
<asp:repeater ID="QuestionRepeater" runat="server">
<ItemTemplate>
<%# Eval("Id") %><%-- WORKS--%>
<uc1:QuestionContainer ID="QuestionContainer1" runat="server" QuestionText='<%# Eval("Id") %>' x="this works!" />
</ItemTemplate>
</asp:repeater>
控制代码
[Bindable(true)]
public string QuestionText { get; set; }
[Bindable(true)]
public string x { get; set; }
我确定这取决于检索数据的异步元素但是如果我调试我可以看到问题列表被拉回数据并且转发器循环正确的次数它只是没有调整值到用户控件
任何帮助都是apreciated