我有一个中继器。过去,转发器中的每个项目都有一个关联的文本框。但是,现在我为重复项添加了一个属性,该属性需要指定该项目是使用文本框、更大的文本框还是复选框。
这是我的 aspx 代码的样子:
<%if (Eval("DisplayType") == "LargeBox") { %>
<asp:TextBox ID="largeBoxAnswer" Rows="8" runat="server" Width="200" MaxLength="2000" EvaluationQuestionID='<%# Eval("EvaluationQuestionId") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="largeBoxAnswer" Display="dynamic" Font-Bold="true" ErrorMessage="*" />
<%} %>
<%else if (Eval("DisplayType") == "CheckBox") { %>
<asp:TextBox ID="checkBoxAnswer" runat="server" Width="200" MaxLength="100" EvaluationQuestionID='<%# Eval("EvaluationQuestionId") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="checkBoxAnswer" Display="dynamic" Font-Bold="true" ErrorMessage="*" />
<%} %>
<%else { %>
<asp:TextBox ID="txtAnswer" runat="server" Width="200" MaxLength="100" EvaluationQuestionID='<%# Eval("EvaluationQuestionId") %>' />
<asp:RequiredFieldValidator ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtAnswer" Display="dynamic" Font-Bold="true" ErrorMessage="*" />
<%} %>
这不起作用,我收到以下错误:
Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control.
我发现了很多关于这个错误的信息,但没有什么能真正帮助解决这个特定问题。
我什至要以正确的方式做这样的事情吗?我对 asp.net 不是超级有经验,所以我对解决这个问题的不同方法持开放态度。如果这是最好的方法,我该如何将逻辑移到后面的代码中才能正常工作?