リピーターがいます。以前は、リピーターの各アイテムにテキスト ボックスが関連付けられていました。しかし、繰り返し項目に属性を追加して、その項目にテキスト ボックス、より大きなテキスト ボックス、またはチェック ボックスを使用するかどうかを指定する必要があります。
私の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の経験が豊富ではないため、この問題に対する別のアプローチを受け入れています。これが最善の方法である場合、ロジックをコード ビハインドに移動して、これが適切に機能するようにするにはどうすればよいですか?