【问题标题】:ASP.NET button CommandArgument using <% %>ASP.NET 按钮 CommandArgument 使用 <% %>
【发布时间】:2015-05-08 08:28:36
【问题描述】:

我的 .aspx 文件中有以下 sn-p 代码,我希望按钮将 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 方法,但它返回“”而不是它所代表的值。在设置 div id 时,这种检索 NoteID 值的方法可以正常工作,所以我不知道为什么它会导致 commandArgument 出现问题。

【问题讨论】:

  • 你为什么要这样?您可以在 ,cs 页面上使用中继器和绑定数据。

标签: c# asp.net button commandargument


【解决方案1】:
<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();

【讨论】:

  • 谢谢,我已经设法使用转发器控件将正确的值发送回我的 .cs 文件。我应该能够根据我的需要调整这种方法。我不熟悉可能解释我的第一种方法的 asp.net 应用程序。
【解决方案2】:

很遗憾,您不能在 .NET 控件中使用 代码块。这与渲染的顺序有关。构建页面时,您必须在后面的代码中设置 CommandArgument。如果您使用转发器而不是页面中的每个来构建页面,则可以这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2011-08-13
    • 2010-09-28
    • 2011-06-02
    • 2011-04-27
    • 2011-08-01
    相关资源
    最近更新 更多