我正在整理一个简单的博客,我尝试实现的功能之一是每个帖子的评论/回复部分。在我的帖子视图中,我有一个 foreach 循环,用于打印该帖子的所有评论。
@foreach (var comments in Model.Post.Comments)
{
if (comments.ReplyToId == 0)
{
<p>@comments.Body <span><a href="#" class="toggleReply">Reply</a></span></p>
<div id="replyTextBox" style="display:none">
@using (Html.BeginForm("Reply", "Comment", FormMethod.Post))
{
<input type="hidden" name="PostId" value="@Model.Post.PostId" />
<input type="hidden" name="CommentId" value="@comments.CommentId" />
<input type="text" name="Body" id="CommentBody" />
<input type="submit" value="Submit" />
}
</div>
}
foreach (var reply in Model.Post.Comments)
{
if(reply.ReplyToId == comments.CommentId)
{
<ul>
<li>@reply.Body</li>
</ul>
}
}
}
我有一个 if 语句来检查数据库以查看评论是新评论还是对评论的回复。每个新评论都包含一个回复按钮,允许用户回复评论。我在这个按钮上添加了一些 jquery 来隐藏或显示回复文本框。
这是jquery代码:
@section scripts {
<script type="text/javascript">
$(document).ready(function () {
$('.toggleReply').click(function () {
$('#replyTextBox').toggle();
});
});
</script>
}
我遇到的问题是,由于这些回复文本框的动态特性,只有第一个按钮似乎显示了一个文本框。当我点击前面的其他回复按钮时,只有第一个回复按钮的文本框受到影响。
为不够简洁的解释道歉。