2017-02-14 99 views
0

布局 - >查看 - >管窥ASP.NET MVC是否可以在局部视图中使用ajax.beginform?

在查看:

 <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也在其他页面上)。在View页面上,当我添加一条新评论时,它会添加到数据库中,并通过ajax显示更新的评论列表。一切正常。

管窥

但是,如果我想报告为垃圾邮件的评论,我必须单击局部视图(#submit_link)内部链接和报告之后,#reportscount部分里面,我想显示该评论的更新报告数量。 actionresults返回像Content(numberofreports.toString())那样的数字。它的工作原理,但我在空白页中获得号码?

非常感谢。

回答

0

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

+0

噢,谢谢!所以,我应该使用布局 - 视图 - 部分视图 - 部分视图?那可能吗? – user5618385