我们可以在单视图剃须刀中使用多个html.begin吗?

时间:2013-01-07 13:36:59

标签: c# razor asp.net-mvc-4

我正在研究博客嵌套评论。

我习惯使用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

1 个答案:

答案 0 :(得分:0)

是的,您可以在页面上放置多个表单,只要一个表单不嵌套在另一个表单中。

调试时会发生什么?它是否会转到正确的操作并且不传递任何值?