2015-11-06 148 views
0

我有一个详细视图,其中会有对话,甚至是对话框中的评论框。我在部分视图中有一个评论框。但在决定更新创建评论的对话时遇到了问题。 我知道我可以在部分视图下面绑定代码。但我很难调用它的操作方法。 因此,这将有详细查看代码,然后在下面的代码在mvc刷新局部视图

<div class="row"> 
    <div class="panel-group" id="accordion"> 
     @foreach (var convo in Model.TicketConversation.OrderByDescending(x => x.LastUpdatedTimestamp)) 
     { 
      <div class="col-md-10 col-md-offset-1" style="padding-bottom: 5px;"> 
       <div class="panel panel-default"> 
        <div class="panel-heading removePaddingBottom" data-toggle="collapse" data-target="#[email protected]" style="background-color: inherit;" id="[email protected]" onclick="javascript:showHideLastConvoMsg(@convo.id)"> 
         <a style="text-decoration: none !important; color: inherit; width: 100px;"> 
          <span style="font-size: 16px; font-weight: bold; vertical-align: middle !important;"><i class="fa fa-chevron-right" id="[email protected]"></i>&nbsp;&nbsp;@convo.Subject</span> 
         </a> 
         @{ var lastmessage = convo.ConversationComments.First(); } 
         <div class="row"> 
          <div id="[email protected]" style="margin-top: 15px;"> 
           <div class="@lastmessage.DisplayCssClass"> 
            <div class="row"> 
             <div class="col-md-offset-1 col-md-10 removePadding" style="margin-bottom: 5px; margin-top: 10px;"> 
              <strong>@lastmessage.TypeOfContact</strong> 
             </div> 
             <div class="col-md-offset-1 col-md-10 removePadding" style="margin-bottom: 10px;"> 
              @lastmessage.Message 
             </div> 
            </div> 
            <div class="row"> 
             <div class="col-md-offset-6 col-md-5 text-right text-muted" style="margin-bottom: 10px;"> 
              <small> 
               <em>Posted by @lastmessage.CommenterName @@ @lastmessage.MessageTimestamp</em> 
              </small> 
             </div> 
            </div> 
           </div> 
          </div> 
         </div> 
        </div> 
        <div id="[email protected]" class="panel-collapse collapse"> 
         <div class="panel-body" style="padding: 0;"> 
          @if (convo.IsReadOnly == false @*&& Model.IsClosed == false*@) 
          { 
           <div class="row"> 
            @*<div class="col-md-12" style="padding-bottom: 3px; padding-top: 3px;"> 
             <a href="@Url.Action("ReplyQuery", new { cid = convo.id })" class="pull-right btn btn-sm btn-default"><i class="fa fa-reply"></i>&nbsp;Reply</a> 
            </div>*@ 

            ---- here i'm calling partial view for comment box--- 
          } 
          @foreach (var item in convo.ConversationComments) 
          { 
           <div> 
            <div class="message-border @item.DisplayCssClass"> 
             <div class="row"> 
              <div class="col-md-offset-1 col-md-10 removePadding" style="margin-bottom: 5px;"> 
               <strong>@item.TypeOfContact</strong> 
              </div> 
              <div class="col-md-offset-1 col-md-10 removePadding" style="margin-bottom: 10px;"> 
               @item.Message 
              </div> 
             </div> 
             <div class="row"> 
              <div class="col-md-5 text-right text-muted"> 
               <small> 
                <em>Posted by @item.CommenterName @@ @item.MessageTimestamp</em> 
               </small> 
              </div> 
             </div> 
            </div> 
           </div> 
          } 
         </div> 
        </div> 
       </div> 
      </div> 
     } 
    </div> 
</div> 

该方法可以被调用来获得会话列表?我需要写一个新的操作方法吗?

回答

1

您可以创建一个操作方法,该方法返回你有对话的局部视图。对于前:

public class SomeCtrlController : Controller 
{ 
    public PartialViewResult Conversation(int id) 
    { 
     List<Conversation> conversations = new List<Conversation>(); 
     //Use id to create your Model and pass it to Partial View 
     conversations = PopulateConversations(id); 

     // The below code search for Conversation.cshtml inside Views\SomeCtrl folder 
     return PartialView(conversations); 
    } 
} 
从CSHTML(Razor视图)

然后,你可以这样调用它首次装载:

@{ Html.RenderAction("Conversation", "SomeCtrl", new { id = 1 /*this will be id for which conversion have to load */ });} 

然后刷新刚刚的对话,你可以使用jQuery AJAX或get方法。这将只刷新你指定的部分。看下面的例子

<script> 
    var conversationData = { 
     "id": 1 /*this will be id for which conversion have to load */ 
    }; 
    $.get("/SomeCtrl/Conversation", conversationData, 
      function (returnedHtml) { 
       $("#placeHolderDivToHaveConversation").html(returnedHtml); 
      }); 
</script> 
0

当我需要这样做时,我使用jquery ajax。例如:

我需要加载以下动态这个div:

按钮查看

<button id="buscarVideos" class="btn">Buscar</button> 

我打电话给我的阿贾克斯一个事件和负荷,结果有:

成功ajax

$("#partial_video").html(data); 

部分

<div class="col-lg-12"> 
      <div id="partial_video"> 
       @*@Html.Partial("_Player")*@ 
      </div> 
    </div> 

回报控制器

return PartialView("_Player", video);