ASP.NET MVC是否可以在局部视图中使用ajax.beginform?

时间:2017-02-14 14:49:58

标签: asp.net ajax asp.net-mvc

布局 - >查看 - >部分视图

在视图中

      <div class="col-md-8">
            @{Html.RenderPartial("_komentari", commentlist);}
            <div class="gap gap-small"></div>
            <div class="box bg-gray">
                <h3>@Res.commentwrite_title</h3>
                @using (Ajax.BeginForm("postcomment", new { propertyid = Model.PublicID }, new AjaxOptions { UpdateTargetId = "commentsarea", HttpMethod = "Post", InsertionMode = InsertionMode.Replace }, null))
                {
                    <div class="row">
                        <div class="col-md-8">
                            <div class="form-group">
                                <label>@Res.commentwrite_content</label>
                                <textarea id="comment" name="comment" class="form-control" rows="6"></textarea>
                            </div>
                            <div class="form-group">
                                <input class="btn btn-primary" type="submit" value='@Res.commentwrite_btn' />
                            </div>
                        </div>
                    </div>
                }
            </div>
        </div>

在部分视图中

    <div id="commentsarea">
    <ul class="booking-item-reviews list">
        @if (Model != null)
        {
            foreach (Comment item in Model)
            {
                <li>
                    <div class="row">
                        <div class="col-md-2">
                            <div class="booking-item-review-person">
                                <a class="booking-item-review-person-avatar round" href="#">
                                    <img src="/assets/img/70x70.png" alt="Image Alternative text" title="Bubbles" />
                                </a>
                                <p class="booking-item-review-person-name">

                                    @if (item.UserId != null)
                                    {
                                        <a href='@Url.Action("details", "user", new { userid = item.User.PublicId })'>@item.User.Username</a>
                                    }
                                    else
                                    {
                                        <a href="#">Anonymous</a>
                                    }

                                </p>
                            </div>
                        </div>
                        <div class="col-md-10">
                            <div class="booking-item-review-content">
                                <p>
                                    @item.Content
                                </p>
                                <p class="text-small mt20">@item.DateOnMarket</p>

                                <p class="booking-item-review-rate">
@using (Ajax.BeginForm("reportcomment", new { comment = item.PublicId }, new AjaxOptions { UpdateTargetId = "reportscount", HttpMethod = "Post", InsertionMode = InsertionMode.Replace }, null))
                    {
                                    <a id="submit_link" href="#">Spam?</a>
                                    <a class="fa fa-thumbs-o-down box-icon-inline round" href="#"></a>
                    }
    <b id="reportscount" class="text-color">@item.CommentReports.Count</b>
                                </p>
                            </div>
                        </div>
                    </div>
                </li>
            }

        }
    </ul>
</div>

<script>
    $(function () {
        $('a#submit_link').click(function () {
            $(this).closest("form").submit();
        });
    });
</script>

查看

Ajax的两个脚本总是包含在布局中(我已经在其他页面上使用了Ajax)。在“查看”页面上,当我添加新注释时,它将添加到数据库中,并通过ajax显示更新的注释列表。一切正常。

部分视图

但如果我想将评论报告为垃圾邮件,我必须点击部分视图(#submit_link)内的链接,并在报告后,在#reportscount部分内,我想显示更新的报告数量那个评论。 actionresults返回该内容(numberofreports.toString())之类的数字。它有效,但我在空白页中得到了数字?

非常感谢。

1 个答案:

答案 0 :(得分:0)

如果你不这样做会更好。主要问题是,出于安全原因,当HTML插入DOM时,<script>标记会被忽略。由于Ajax.*系列助手通过插入<script>标签来工作,当您通过AJAX返回部分时,这些不会出现。如果您只在部分中包含表单的HTML内容,而不是表单本身,则会更好。