我正在研究博客嵌套评论。
我习惯使用html.beginform一个用于添加新评论,另一个用于回复。
我的观点:
<fieldset class="new-comment">
<legend class="title">@T("Blog.Comments.LeaveYourComment")</legend>
@using (Html.BeginForm())
{
<div id="newcomment">
<div class="message-error">@Html.ValidationSummary(true)</div>
@{
string result = TempData["nop.blog.addcomment.result"] as string;
}
@if (!String.IsNullOrEmpty(result))
{
<div class="result">@result</div>
}
<div class="forms-box">
<div class="inputs">
@Html.LabelFor(model => model.AddNewComment.CommentText)
<div class="input-box">
@Html.TextAreaFor(model => model.AddNewComment.CommentText, new { @class = "comment-text" })
</div>
@Html.ValidationMessageFor(model => model.AddNewComment.CommentText)
</div>
@if (Model.AddNewComment.DisplayCaptcha)
{
<div class="captcha-box">
@Html.Raw(Html.GenerateCaptcha())
</div>
<div class="clear">
</div>
}
</div>
<div class="clear">
</div>
<div class="buttons">
<input type="submit" name="add-comment" class="button-1 blog-post-add-comment-button" value="@T("Blog.Comments.SubmitButton")" />
</div>
</div>
}
</fieldset>
答复:
<div class="container">
@{//to set div id in comment list
var Count = 0;
var CommentParentID = 0; }
@using (Html.BeginForm())
{
foreach (var commentlist in Model.Comments.Where(x => x.CommentParentID == 0))
{
<div class="nested-comments">
<div>
@if (commentlist.AllowViewingProfiles)
{
<a href="@Url.RouteUrl("CustomerProfile", new { id = commentlist.CustomerId })" class="username">@(commentlist.CustomerName)</a>
}
else
{
<span class="username">@(commentlist.CustomerName)</span>
}
<div class="avatar">
@if (!String.IsNullOrEmpty(commentlist.CustomerAvatarUrl))
{
<img src="@(commentlist.CustomerAvatarUrl)" class="avatar-img" title="avatar" alt="avatar" />
}
</div>
<div class="comment-content">
<div class="comment-time">
@T("Blog.Comments.CreatedOn"): <span class="stat-value">@commentlist.CreatedOn.ToString("g")</span>
<div>
<div id="div_@Count" style="display: none;">
@{CommentParentID = commentlist.Id;
Model.AddNewComment.CommentParentID = CommentParentID;}
<div>
<div class="message-error">@Html.ValidationSummary(true)</div>
@{
string strresult = TempData["nop.blog.addcomment.result"] as string;
}
@if (!String.IsNullOrEmpty(strresult))
{
<div class="result">@strresult</div>
}
<div>
<div id="ChildComment_@Model.AddNewComment.CommentParentID">
@Html.HiddenFor(modelComment => modelComment.AddNewComment.CommentParentID)
@Html.Label("Reply Comment")
<div>
@Html.TextAreaFor(modelComment => modelComment.AddNewComment.ChildCommentText)
</div>
@Html.ValidationMessageFor(modelComment => modelComment.AddNewComment.ChildCommentText,"Please Enter Reply")
</div>
@if (Model.AddNewComment.DisplayCaptcha)
{
<div class="captcha-box">
@Html.Raw(Html.GenerateCaptcha())
</div>
<div class="clear">
</div>
}
</div>
<div class="clear">
</div>
<div class="buttons">
<input type="submit" name="reply-comment" value="@T("Blog.Comments.ReplyButton")" />
</div>
</div>
<div class="clear">
</div>
</div>
<input type="button" id="reply" class="reply-link" onclick="return showHide('div_@Count');" value="Reply" />
@{Count++; }
</div>
</div>
<div class="comment-body">
@Html.Raw(Nop.Core.Html.HtmlHelper.FormatText(commentlist.CommentText, false, true, false, false, false, false))
</div>
</div>
<div class="clear">
</div>
@foreach (var cmt in Model.Comments.Where(x => x.CommentParentID == commentlist.Id))
{
<div class="comment">
<div>
<div class="user-info">
@if (cmt.AllowViewingProfiles)
{
<a href="@Url.RouteUrl("CustomerProfile", new { id = cmt.CustomerId })" class="username">@(cmt.CustomerName)</a>
}
else
{
<span class="username">@(cmt.CustomerName)</span>
}
<div class="avatar">
@if (!String.IsNullOrEmpty(cmt.CustomerAvatarUrl))
{
<img src="@(cmt.CustomerAvatarUrl)" class="avatar-img" title="avatar" alt="avatar" />
}
</div>
</div>
</div>
<div class="comment-content">
<div class="comment-time">
@T("Blog.Comments.CreatedOn"): <span class="stat-value">@cmt.CreatedOn.ToString("g")</span>
</div>
<div class="comment-body">
@Html.Raw(Nop.Core.Html.HtmlHelper.FormatText(cmt.CommentText, false, true, false, false, false, false))
</div>
</div>
</div>
}
@Html.Widget("blogpost_page_inside_comment")
</div>
</div>
}
}
</div>
当我点击“回复”按钮时,我无法获取参数值 modelComment =&gt; modelComment.AddNewComment.ChildCommentText
答案 0 :(得分:0)
是的,您可以在页面上放置多个表单,只要一个表单不嵌套在另一个表单中。
调试时会发生什么?它是否会转到正确的操作并且不传递任何值?