gpt4 book ai didi

c# - 使用 JQuery 重新加载部分 View

转载 作者:行者123 更新时间:2023-12-01 02:58:37 25 4
gpt4 key购买 nike

我有一个页面,顶部有一个视频,还有一个可供您选择的视频列表。目前,单击视频列表中的链接将重新加载整个页面。我需要它仅刷新包含页面顶部视频的部分 View 。

我在这里看到了几篇关于 SO 的帖子,展示了如何使用 JQuery 重新加载部分 View ,但在我的情况下无法使其正常工作。我不确定如何传递视频的正确 ID。

Controller :

    public ActionResult Videos(int topVideo = 0)
{
VideosModel model = new VideosModel();
model.Videos = StatsVideoService.GetEntityList(new Lookup(TableStatsVideo.IsDeleted, false)).OrderByDescending(x => x.DateCreated).ToList();

if (topVideo == 0)
model.TopVideo = model.Videos.First();
else
{
model.TopVideo = model.Videos.Where(x => x.StatsVideoId == topVideo).FirstOrDefault();
if (model.TopVideo == null)
model.TopVideo = model.Videos.First();
}

return View(model);
}

查看:

@model Project.Models.VideosModel

<section class="videos">
<div id="top_video">
@{Html.RenderPartial("StatsVideo", Model.TopVideo);}
</div>

<ul>
@foreach (var item in Model.Videos)
{
<li>
<div class="videoList">
<a href ="@Url.Action("Videos", "Home", new { topVideo = item.StatsVideoId })">
<img src="@Url.Content("~/Content/img/video-ph.png")" />
</a>
<p class="videoTitle">@item.Title</p>
</div>
</li>
}
</ul>
</section>

如果需要更多信息,请告诉我。

最佳答案

经过几个小时的头撞墙后,我终于成功了!作为对将来查看本文的其他人的引用,以下是我如何让它发挥作用:

我将链接的onclick设置为指向一个javascript方法,并传入视频的id作为参数:

    @foreach (var item in Model.Videos)
{
<li>
<div class="videoList">
<a href ="#" onclick="updateTopVideo(@item.StatsVideoId)">
<img src="@Url.Content("~/Content/img/video-ph.png")" />
</a>
<p class="videoTitle">@item.Title</p>
</div>
</li>
}

然后我将此脚本包含在底部的 View 中:

<script>
var updateTopVideo = function (itemId) {

var url = '@Url.Content("~/Home/StatsVideo/")';
url = url + itemId;
$.get(url, "", callBack, "html");
};

var callBack = function (response) {
$('#top_video').html(response);
};
</script>

最后,我向 Controller 添加了一个方法,该方法将返回屏幕顶部视频所需的部分 View :

    public ActionResult StatsVideo(int Id)
{
IStatsVideo vid = StatsVideoService.GetEntity(new Lookup(TableStatsVideo.StatsVideoId, Id));
if (vid == null)
vid = StatsVideoService.GetEntityList(new Lookup(TableStatsVideo.IsDeleted, false)).OrderByDescending(x => x.DateCreated).FirstOrDefault();

return PartialView(vid);
}

这段代码应该相当容易理解。基本上,onclick 调用第一个 javascript 方法,然后该方法调用 Controller 。 Controller 构建局部 View 并返回它。第一个 javascript 方法将其传递给第二个 javascript 方法,该方法将 div“top_video”的 html 设置为返回的部分 View 。

如果有任何事情没有意义,或者任何人将来遇到麻烦,请告诉我,我会尽力提供一些帮助。

关于c# - 使用 JQuery 重新加载部分 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14419436/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com