2015-10-27 61 views
0

我試圖做一個ajax調用,它將加載一個新模型並基於當前加載的模型重新加載我的editorTemplates。在ajax調用上加載新模型EditorTemplate - MVC項目

現在我有創建HotelModel它看起來像這樣:

public class HotelsModel 
{ 
    public List<HotelsReservationModel> HotelsReservation { get; set; } 
    public bool SkipButton { get; set; } 
} 

public class HotelsReservationModel 
{ 

    public string City { get; set; } 
    public DateTime CheckIn { get; set; } 
    public DateTime CheckOut { get; set; } 
    public List<Hotel> Hotels { get; set; } 

} 

public class Hotel 
{ 
    public string Name { get; set; } 
    public int Rating { get; set; } 
} 

然後,我創造了一些EditorTemplates:HotelsReservationModel.cshtml & Hotel.cshtml

現在,我有以下訂購:

  1. Index.cshtml(致電HotelsModel)
  2. HotelsReservationModel.cshtml(主叫HotelsReservationModel)
  3. Hotel.cshtml(主叫酒店)

我想在一個新的酒店(模型)來傳遞,所以當用戶點擊搜索,一個Ajax調用會發生,有些人知道酒店應該出現。

我的Ajax代碼:從HotelsReservationModel.cshtml

<script type="text/javascript"> 

$(function() { 

    var res = { 
     loader: $("<div />", { class: "loader" }), 
    }; 

    $('#search').on('click', function() { 
     $.ajax({ 
      type: 'GET', 
      url: "@Url.Action("Find", "Hotel")", 
      datatype: "html", 
      beforeSend: function() { 
       $("#group-panel-ajax").append(res.loader); 
      }, 
      success: function (data) { 
       $("#group-panel-ajax").find(res.loader).remove(); 
       $('#group-panel-ajax').html(data); 
      } 
     }); 
     return false; 
    }); 
}); 

</script> 

代碼

<div class="group-panel" id="group-panel-ajax"> 
    @Html.EditorFor(m => m.Hotels) 
</div> 

的ActionResult查找方法

public ActionResult Find() 
    { 
     Hotel model = new Hotel() 
     { 
      Name = "Cromwell Hotel ", 
      Rating = 5, 

     }; 

     return PartialView("Hotel", model); 

    } 

可以看到我做錯了什麼嗎?如果我運行「返回部分視圖(」索引「,模型)的東西是加載..那麼整個頁面與模型加載內部div。我想要的只是加載」酒店「 - >新模型Hotel.cshtml。

+0

你能否澄清一下不工作?你的ajax調用是否到達你的服務器方法?成功回調中是否有任何數據返回? –

+0

當我嘗試加載「索引」頁面它工作..但我想它加載EditorTemplate文件夾內的酒店頁面。 – Mikkel

回答

0

找到了我的問題一個很好的解決方案。

什麼的伎倆是包裝jQuery中的數據,並利用該方法找到並應該重新創建DIV指向。

第一編碼:

$('#group-panel-ajax').html(data); 

最終代碼:

$('#group-panel-ajax').html($(data).find("#group-panel-ajax"));