ASP.NET按钮CommandArgument使用< %%>

时间:2015-03-06 16:59:59

标签: c# asp.net button commandargument

我的.aspx文件中有以下代码片段,我希望按钮将ID发送到后面的代码。

<%List<Notes> CommentsList = FindNotes(ParentNote.ID); %>
        <%foreach (var comment in CommentsList) { %>
            <div id="note" class="tierTwo"><p><%: comment.Content %></p><ul><li><%: comment.AddedDate %></li><li>20:29</li><li><%: comment.AddedByName %></li><li><a href="#" onclick="showAddComment(addComment<%:comment.NoteID%>)" class="but">Add comment</a></li></ul> >
                <div id="addComment<%:comment.NoteID%>" class="tierOne" style="display:none">
                    <asp:TextBox ID="commentreplytext" runat="server" rows="4"> </asp:TextBox>
                    <asp:HiddenField id="ParentIdReply" value='<%=comment.NoteID%>' runat="server" />
                    <asp:Button ID="Button2" runat="server" Text="Add" CommandArgument="<%: comment.NoteID%>" OnCommand="Add_Comment" /> 
                </div>
            </div>

目前背后的代码如下所示

 protected void Add_Comment(object sender, CommandEventArgs e)
 {
    string uniqueNoteID = e.CommandArgument.ToString(); 
 }

命令参数将被发送到Add_Comment方法,但它返回&#34;&lt;%:comment.NoteID%&gt;&#34;而不是它代表的价值。这种检索NoteID值的方法在设置div id时工作正常,因此我不知道它在commandArgument中导致问题的原因。

2 个答案:

答案 0 :(得分:1)

很遗憾,您无法使用&lt; %%&gt; .NET控件中的代码块。这是处理事物被渲染的顺序。在构建页面时,您必须在代码中设置CommandArgument。如果使用转发器而不是页面中的每个转发器构建页面,则可以这样做。

答案 1 :(得分:0)

<asp:Repeater runat="server" id="repeater1">

<ItemTemplate>
<div id="note" class="tierTwo"><p><%# Eval("Content") %></p><ul>
<li><%# Eval("AddedDate") %></li><li>20:29</li>
<li><%# Eval(AddedByName") %></li><li>
<a href="#" onclick='showAddComment(addComment<%#Eval("NoteID")%>)' class="but">Add comment</a></li></ul> 
                <div id='addComment<%# Eval("NoteID") %>' class="tierOne" style="display:none">
                    <asp:TextBox ID="commentreplytext" runat="server" rows="4"> </asp:TextBox>
                    <asp:HiddenField id="ParentIdReply" value='<%#Eval("NoteID")%>' runat="server" />
                    <asp:Button ID="Button2" runat="server" Text="Add" CommandArgument='<%#Eval("NoteID")%>' OnCommand="Add_Comment" /> 
                </div>
            </div>
</ItemTemplate>
</asp:Repeater>

.cs页面:

repeater1.DataSource = FindNotes(ParentNote.ID);
repeater1.DataBind();