2016-02-26 48 views
0

我有一個KendoUI網格,返回一些數據,我有一個'.clienttemplate'內的一個按鈕綁定到數據ID。當你點擊該鏈接時,它使用Bootstrap 3模式顯示部分視圖。問題是,儘管ID是全部爲不同的我總是得到相同的結果反饋(通常你點擊了when的第一個ID,他的頁面加載)引導模式和MVC部分視圖

查看

@(Html.Kendo().Grid<Kendo_Range_Test.ViewModels.VesselViewModel>() 
    .Name("Grid") 
    .Columns(columns => 
    { 
     columns.Bound(c => c.owner_company);   
     columns.Bound(c => c.vessel_name); 
     columns.Bound(c => c.vessel_type);       
     columns.Bound(c => c.fixture_stop); 
     columns.Bound(c => c.fixture_location); 
     columns.Bound(c => c.fixture_note); 
     columns.Bound(c => c.vessel_status); 
     columns.Command(command => { command.Edit(); }).Width(180); 
    columns.Bound(c => c.vessel_idx) 
      .ClientTemplate(
      "<a data-identity='#=vessel_idx#' data-toggle='modal' data-target='\\#myModal' href='" + Url.Action("VesselModal", "BrokerHome") + "/#=vessel_idx #'" + ">Vessel</a>"); 
    } 
) 
    .Editable(editable => editable.Mode(GridEditMode.InLine)) 
    .Pageable() 
    .Reorderable(reorder => reorder.Columns(true)) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .PageSize(40) 
     .Model(model => 
      { 
       model.Id(p => p.vessel_idx); 
      }) 
     .Read(read => read.Action("vessels_Read", "BrokerHome")) 
     .Update(update => update.Action("vessels_Update", "BrokerHome")) 
) 

控制器

public ActionResult VesselModal(int? id)      
    { 
     var vessel = db.tbl_vessels.Find(id.Value); 
     var vm = Mapper.Map<VesselViewModel>(vessel); 
     return PartialView("_VesselDetails", vm); 
    } 

我注意到的是,當我申請索姆這個控制器方法的斷點只會被調用一次,而不會再一次,這就是爲什麼結果總是在模態中相同的原因。我可以做些什麼來確保它對每個點擊項目的方法進行新的調用,或者我應該以另一種方式做這種模式?

非常感謝

回答

0

@Yanayaya試用分離錨,並用AJAX + jQuery的處理模式?

剃刀

... 
columns.Bound(c => c.vessel_idx) 
      .ClientTemplate(
      "<a class='getVesselModal' data-identity='#=vessel_idx#' data-toggle='modal' data-target='\\#myModal'>Vessel</a>"); 
... 

腳本

  $(function() { 
       $(document).on('click', '.getVesselModal', function() { 
        this.blur(); 

        var myID = $(this).data('identity'); 

        //I normally use this line.. 
        //$('#myModal').html(""); 

        $('#myModal').replaceWith($('#myModal').clone()); 

        $.ajax({ 
         cache: false, 
         type: "GET", 
         url: '@Url.Action("VesselModal", "BrokerHome")?id=' + myID, 
         success: function (response) { 
          $('#myModal').append(response); 
          $('#myModal').modal(); 
         }, 
         failure: function (response) { 
          alert("Failure"); 
         } 
        }); 

        return false; 
       }); 
      }); 
+0

您好,我想這些了。您可以訪問節目並隱藏事件。我嘗試添加$('#myModal')。('hidden.bs.modal',function(event){$ .ajaxSetup({cache:false})}}但它沒有幫助。你遇到同樣的問題。 – Yanayaya

+0

試試在你提到的ajaxSetup之前加入我在答案中提到的兩條線 –

+0

謝謝,所以我添加了這些行,它們只允許你添加一個模態。然後它不會再打開。我刪除了$('#myModal')。html(「」);並離開克隆線,讓您打開一些數據項然後開始再次顯示相同的數據。感覺就像它幾乎在那裏。 – Yanayaya

0

我設法解決這個問題。在隱藏事件觸發removeData似乎工作最好。我現在得到預期的結果。

下面是代碼

$('#myModal').on('hidden.bs.modal', function (event) { 
    $(this).removeData('bs.modal');          
}) 
+0

幹得好。更容易。 –