2014-02-25 64 views
0

一個DIV裏面這是我的部分觀點:刷新Partialview使用jQuery和Ajax

@model UADDPortal.ViewModels.DatabaseInfoViewModel 

<table class="table table-bordered table-striped"> 
<tr> 
    <td><h5> Status: @Model.CurrentStatus </h5> </td> 
    <td><input type="submit" class="btn btn-success" name="[email protected](Model.CheckoutID)" id="[email protected](Model.CheckoutID)" value="Refresh" /></td> 
</tr> 

這是我的主頁:

<div id="[email protected](item.CheckoutID)"> 
    @Html.Partial("ResourceStatus", item) 
</div> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $('#[email protected](item.CheckoutID)').click(function (e) { 
     e.preventDefault(); // stop the links default behavior 
     $('#[email protected](item.CheckoutID)').load('/Home/GetCurrentStatus/@(item.CheckoutID)'); 
    }); 
}); 
</script> 

最後,這是我的ajax方法在我的主MVC控制器中:

#region ajax calls 
    public PartialViewResult GetCurrentStatus(string Id) 
    { 
     var viewModel = new DatabaseInfoViewModel(null); 
     viewModel.CheckoutID = Convert.ToInt32(Id); 
     viewModel.CurrentStatus = viewModel.GetCurrentStatus(Convert.ToInt32(Id)); 

     return PartialView("ResourceStatus", viewModel); 
    } 

    #endregion ajax calls 

問題是,在DIV部分生成的刷新按鈕似乎隨機工作...有時工作...大部分時間沒有做任何事情......我無法弄清楚爲什麼....

+0

確保內容沒有被緩存。 –

+0

你有多個項目嗎? –

+0

我解決了「只能工作一次」的問題,將此添加到jscript函數中:$ .ajaxSetup({cache:false}); – Fede

回答

1

如果您有多個項目,最好使用data-*屬性作爲網路羣體。

@model UADDPortal.ViewModels.DatabaseInfoViewModel 

<table class="table table-bordered table-striped"> 
<tr> 
    <td><h5> Status: @Model.CurrentStatus </h5> </td> 
    <td><input type="submit" class="btn btn-success btn-checkout" 
     data-chekout-id="@(Model.CheckoutID)" value="Refresh" /></td> 
</tr> 

然後

$(document).ready(function() { 

    $('.btn-checkout').click(function(e){ 

     var checkoutId=$(this).data("chekout-id"); 
     var targetDiv='#ResourceStatus'+checkoutId; 

     $.post('url',{Id:checkoutId},function(result){ 

     $(targetDiv).html(result); 

     }); 
    }); 
}); 
0

正如在評論中提到通過菲德對他的問題

$.ajaxSetup({ cache: false }); 

解決這個問題對我來說。