aspx ページには、次のリピーターがあります。
<asp:Repeater runat="server" ID="r" OnItemCommand="paper_ItemCommand">
<ItemTemplate>
<div style="padding-bottom:20px">
<asp:HiddenField runat="server" ID="questionID" Value='<%# Eval("ID") %>'/>
<asp:Label runat="server" ID="questionNumber" Text='<%# Eval("Number") %>'/><br />
<asp:Label runat="server" ID="question1" Text='<%# Eval("Question1") %>' /><br />
[ <asp:Label runat="server" ID="questionMark" Text='<%# Eval("Mark") %>'/> ]<br />
<asp:Button ID="View_Conversations" runat="server" Text="View Conversations" CommandName="ViewConversationsCommand" />
</div>
</ItemTemplate>
<SeparatorTemplate>
<hr />
</SeparatorTemplate>
</asp:Repeater>
コードビハインドファイルには、次のメソッドがあります。
protected void Page_Load(object sender, EventArgs e)
{
var paperID = Session["paperID"].ToString();
QuestionPaper = repository.GetPaper(Int32.Parse(paperID));
r.DataSource = QuestionPaper.Questions;
r.DataBind();
}
protected void paper_ItemCommand(object sender, RepeaterCommandEventArgs e)
{
switch (e.CommandName)
{
case "ViewConversationsCommand":
var hidden = e.Item.FindControl("questionID") as HiddenField;
var myquestionID = hidden.Value;
break;
}
}
私が抱えている問題は、リピーターの View Conversation ボタンをクリックすると、コードがpaper_ItemCommandメソッドではなくpage_loadメソッドにヒットすることです。ここで何が間違っていますか?