【发布时间】:2021-06-24 18:39:50
【问题描述】:
我仍在尝试使用 Razor Pages for Net Core,但似乎有点卡住了。我有我的 Index.cshtml:
@page
@model IndexModel
<input type="hidden" name="hdnPageSelector" id="hdnIndexPage" />
<div class="text-center">
<p>Welcome to</p>
<h1 class="display-4">"My Web App"</h1>
</div>
<div class="form-row">
<div class="form-group col-md-2">
<partial name="IndexPartials/_Navigation" />
</div>
<div class="form-group col-md-1">
</div>
<div class="form-group col-md-6">
<partial name="IndexPartials/_Body" />
</div>
<div class="form-group col-md-1">
</div>
<div id="refreshMembers" class="form-group col-md-2">
<partial name="IndexPartials/_Members" />
</div>
</div>
注意最后一个 div 有一个id="refreshMembers"。
加载的局部视图 (_Members) 如下所示:
@model IndexModel
<label>Members</label>
<br />
@{
foreach (ApplicationUser user in Model.AppUsersList)
{
if (user.IsLoggedIn)
{
<label>@user.FirstName @user.LastName </label>
<span class="dot"></span>
}
else
{
<label>@user.FirstName @user.LastName</label>
}
}
}
在控制器中,我有一个名为:
public IList<ApplicationUser> AppUsersList { get; set; }
这在OnGetAsync() 上填充如下:
AppUsersList = _userManager.Users.OrderBy(x => x.FirstName).Where(y => y.UserName != currentUser.UserName).ToList();
这很好,页面加载时按预期填充了部分视图。我现在希望每 5 秒刷新一次部分,所以我已将这段 Javascript/JQuery 放在适当的位置:
$(function () {
setInterval(function () {
$("#refreshMembers").load("/Index?handler=RefreshMembers");
}, 5000);
});
使用以下方法设置:
public async Task<IActionResult> OnGetRefreshMembers()
{
var currentUser = await _userManager.GetUserAsync(User);
AppUsersList = _userManager.Users.OrderBy(x => x.FirstName).Where(y => y.UserName != currentUser.UserName).ToList();
return new PartialViewResult
{
ViewName = "_Members",
ViewData = new ViewDataDictionary<List<ApplicationUser>>(ViewData, AppUsersList)
};
}
但是,局部视图不会刷新。如果我在这个方法中放置一个断点,我可以看到它每 5 秒被击中一次,尽管 Devtools 声明每次尝试都会出错:
简而言之,我似乎无法让我的局部视图每 5 秒重新加载一次。感觉就像我很接近,但只是错过了一些东西,不知道那是什么。
【问题讨论】:
-
服务器出现错误,需要查看Output窗口查看详细异常。
-
谢谢...。我错过了输出窗口中所需的所有信息!哈哈长周末!我将在下面发布修复程序!
标签: ajax asp.net-core razor-pages