【发布时间】:2018-02-23 20:46:07
【问题描述】:
我的部分视图中的 .hide 功能最初不会为第二人和第三人呈现,那么延迟 .hide 和 .fadein 也将不起作用。我是 js 和 jquery 的新手,所以我可能遗漏了一些明显的东西......为什么这个 js 脚本不能在局部视图中工作?
一切都在主视图中时一切正常,但我需要部分视图的原因是因为我不想每 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的内容,因此无论有没有 Partial View,您都不会重新加载页面。此外,部分视图被渲染(插入)到 html 流中。就浏览器而言,标记没有区别。也许你把 MVC 的 Partial View 和 WebForm 的 UpdatePanel 混淆了。 -
@adiga 谢谢!我已经实施并且效果很好。
-
脚本永远不会出现在局部。无论如何,部分不支持
@section Scripts{
标签: javascript jquery asp.net-mvc asp.net-mvc-4