我的局部視圖中的.hide函數最初不是爲第二個和第三個人渲染,那麼延遲.hide和.fadein也不起作用。我是js和jquery的新手,所以我可能會錯過某些明顯的東西......爲什麼這個js腳本不能在局部視圖中工作?jQuery功能在MVC局部視圖中不起作用
當它全部在主視圖中時一切正常,但我需要局部視圖的原因是因爲我不想每15秒重新加載整個頁面。我已經做了一些研究,並且可能有錯誤的獲取html數據類型?
主視圖:
@model IEnumerable<project.Models.MyList>
<div id="scrolllist">
@Html.Partial("_ScrollList")
</div>
@section Scripts{
<script>
function loadScrollListPV() {
$.ajax({
url: "@Url.Action("ScrollList")",
type: 'GET', // <-- make a async request by GET
dataType: 'html', // <-- to expect an html response
success: function(result) {
$('#scrolllist').html(result);
}
});
}
$(function() {
loadScrollListPV();
// re-call the functions each 15 seconds
window.setInterval("loadScrollListPV()", 15000);
});
</script>
}
控制器動作:
public ActionResult ScrollList()
{
return PartialView("_ScrollList", db.MyList.ToList());
}
管窺:
@model IEnumerable<project.Models.MyList>
<div id="firstperson">
@*Get lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Take(1))
{
}
</div>
<div id="secondperson">
@*Get second lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Skip(1).Take(1))
{
}
</div>
<div id="thirdperson">
@*Get third lastest record and display.*@
@foreach (var donor in Model.OrderByDescending(p => p.ProcessTime).Skip(2).Take(1))
{
}
</div>
@section Scripts{
<script>
$("#secondperson").hide();
$("#thirdperson").hide();
function person() {
$("#firstperson").delay(5000).hide(0, function() {
$("#secondperson").fadeIn();
$("#secondperson").delay(5000).hide(0, function() {
$("#thirdperson").fadeIn();
$("#thirdperson").delay(5000).hide(0, function() {
$("#firstperson").fadeIn();
person();
});
});
});
}
</script>
}
任何幫助將是真棒,在此先感謝!
你之所以使用的局部視圖是有缺陷的。您的ajax成功處理程序僅替換'#scrolllist'的內容,因此無論是否帶有「部分視圖」,都不會重新加載頁面。另外,部分視圖被渲染(插入)到html流中。就瀏覽器而言,標記沒有區別。也許你正在將MVC的Partial View與WebForm的UpdatePanel混淆起來。 –
@adiga謝謝你!我已經實施並且效果很好。 – Alex
腳本永遠不會偏執。 '@section Scripts {'在部分中不受支持 –