.NET 个人博客-首页排版优化

这篇具有很好参考价值的文章主要介绍了.NET 个人博客-首页排版优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人博客-首页排版优化

优化计划

本篇文章优化置顶

原先置顶如图

.NET 个人博客-首页排版优化

新置顶图

.NET 个人博客-首页排版优化

可以看到下方多了3个按钮,可以通过按钮切换置顶,然后我设置了每3秒自动切换。

思路

用bootstrap5提供的Carousel组件去完成,首先需要将之前返回一条信息的文章置顶接口换成一个集合,然后放入组件就行了

代码实现

将HomeController中的Index方法的TopPost = _TopPostService.GetTopOnePost()换成集合就行了

public async Task<IActionResult> Index()
{
    HomeViewModel homeView = new HomeViewModel()
    {
        FeaturedPhotos = _fPhotoService.GetFeaturePhotos(),
        FeaturedCategories = _fCategoryService.GetFeaturedCategories(),
        TopPost = _TopPostService.GetTopOnePost(),
        FeaturedPosts = await _PostService.GetFeaturedPostsAsync(new QueryParameters
                                                                 {
                                                                     Page = 1,
                                                                     PageSize = 8,
                                                                 }),
        Links = await _linkService.GetAll(),
        Notices = await _noticeService.GetAllAsync(),
        HomePost = await _articelsService.HomePostAsync(),
        // MaxPost = await _articelsService.MaxPostAsync()
    };
    return View(homeView);
}

接口和服务

public interface ITopPostService
{
// Post GetTopOnePost();
Task<List<Post>> GetTopOnePostAsync();
}

public async Task<List<Post>> GetTopOnePostAsync()
{
    var topPosts = await _myDbContext.topPosts.Include(t => t.Post).ToListAsync();

    if (topPosts.Count == 0)
    {
    return null;
    }                
    return topPosts.Select(tp => tp.Post).ToList();
}

Rezor页面代码

bootstrap5提供的组件使用起来方便

  1. data-bs-ride: 设置为carousel,表示启用自动播放幻灯片。
  2. data-bs-interval: 设置自动切换幻灯片之间的时间间隔,单位为毫秒。

将外层div的id设置为myCarousel,然后将切换按钮的data-bs-target设置为#myCarousel就能与之绑定,data-bs-slide这个属性用于指定按钮的行为,即指定要切换到前一个或后一个幻灯片。它可以设置为prev表示切换到前一个幻灯片,或者设置为next表示切换到后一个幻灯片。文章来源地址https://www.toymoban.com/news/detail-621379.html

<div id="myCarousel" class="carousel carousel-dark slide" data-bs-ride="carousel" data-bs-interval="3000">
    <div class="carousel-indicators" style="bottom: 10px;">
        @foreach (var item in Model.Select((value, index) => new { Value = value, Index = index }))
        {
            <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="@item.Index" class="@if (item.Index == 0) { <text>active</text> }" aria-label="Slide @item.Index + 1"></button>
        }
    </div>
    <div class="carousel-inner">
        @foreach (var item in Model.Select((value, index) => new { Value = value, Index = index }))
        {
            <div class="carousel-item @if (item.Index == 0) { <text>active</text> }">
                <div class="row rounded mb-4 shadow-sm box border" style="margin-left:3px;margin-right:3px">
                    <div class="col-md-6">
                        <div class="p-4 p-md-5 mb-4 text-black">
                            <div class="display-6 fst-italic">@item.Value.Title</div>
                            <p class="lead my-3">@item.Value.Summary</p>
                            <p class="lead mb-0">
                                <a class="text-black fw-bold" asp-controller="Blog" asp-action="Post" asp-route-id="@item.Value.Id">
                                    Continue reading...
                                </a>
                            </p>
                        </div>
                    </div>
                    <div class="col-md-6" style="padding-right:0">
                        <img class="bd-placeholder-img img-fluid no-padding rounded" style="object-fit: cover; object-position: center;width:100%;height:500px"
                             src="@Url.Action("GetRandomImageTop", "PicLib", new { seed = item.Value.Id })" alt=""/>
                    </div>
                </div>
            </div>
        }
    </div>
    <button class="carousel-control-prev" type="button" data-bs-target="#myCarousel" data-bs-slide="prev" style="width:5%">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Previous</span>
    </button>
    <button class="carousel-control-next" type="button" data-bs-target="#myCarousel" data-bs-slide="next" style="width:5%">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Next</span>
    </button>
</div>
@await Html.PartialAsync("Widegets/HomeTopPostCard", Model.TopPost)

查看完整代码

  • https://github.com/ZyPLJ/personalblog/blob/master/Personalblog/Controllers/HomeController.cs
  • https://github.com/ZyPLJ/personalblog/blob/master/PersonalblogServices/FtopPost/TopPostService.cs

参考资料

  • Carousel · Bootstrap v5 中文文档 v5.3 | Bootstrap 中文网 (bootcss.com) https://v5.bootcss.com/docs/components/carousel/

到了这里,关于.NET 个人博客-首页排版优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微信小程序】博客小程序,静态版本(三)设计和开发首页、个人关于页

    【微信小程序】博客小程序,静态版本(一)准备工作 【微信小程序】博客小程序,静态版本(二)引入 lin-ui 组件、设计和开发文章页 【微信小程序】博客小程序,静态版本(三)设计和开发首页、个人关于页 李老板又来催更了,万般 “求求” 我之下,继续开始开发。

    2024年02月10日
    浏览(48)
  • .NET 个人博客系统

    之前通过github学习了一个.net core的博客项目,最近也是完成了博客的备案,完善了一下。该项目是传统的MVC项目,可以进行主题的切换,采用Bootstrap进行前台页面的展示,有配套的后台管理系统,可以解析Markdown文件。 ZY知识库 可以将个人的意见评论到该文章,我可以采纳采

    2023年04月11日
    浏览(40)
  • .NET 个人博客-添加RSS订阅功能

    个人博客系列已经完成了 留言板 文章归档 推荐文章优化 推荐文章排序 博客地址:https://pljzy.top 然后博客开源的原作者也是百忙之中添加了一个名为 RSS订阅 的功能,那么我就来简述一下这个功能是干嘛的,然后照葫芦画瓢实现一下。 来自 chatGPT 的回答 网站的RSS订阅是一种

    2024年02月11日
    浏览(42)
  • .NET 个人博客-给文章添加上标签

    置顶3个且可滚动或切换 推荐改为4个,然后新增历史文章,将推荐的加载更多放入历史文章,按文章发布时间降序排列。 标签功能,可以为文章贴上标签 推荐点赞功能 本篇文章实现文章标签功能 首先需要新增一个标签类Tag,然后Post文章类和Tag标签类的关系是多对多的关系。

    2024年02月12日
    浏览(47)
  • .NET个人博客-使用Back进行消息推送

    我的好友看了我的博客,给我提了个需求,让我搞个网站通知,我开始以为就是评论回复然后发送邮件通知。不过他告诉我网站通知是,当有人评论或者留言后,会通知到我这边来,消息是实时通知的,他说用的是Back,不需要发邮件,然后发了个GitHub链接给我,我觉得还不错

    2024年02月16日
    浏览(35)
  • 基于ASP.NET MVC开发的、开源的个人博客系统

    推荐一个功能丰富、易于使用和扩展的开源博客,可以轻松地创建和管理自己的博客。 基于.Net Framework 4.5开发的、开源博客系统,具有丰富的功能,包括文章发布、分类、标签、评论、订阅、统计等功能,同时也可以根据需要进行自定义扩展。 提供了丰富的配置选项和API,

    2024年02月14日
    浏览(57)
  • 【.NET6 + Vue3 + CentOS7.9 + Docker + Docker-Compose + SSL】个人博客前后端运维部署

    个人博客 前端:https://lujiesheng.cn 个人博客 后端:https://api.lujiesheng.cn 个人博客 运维:https://portainer.lujiesheng.cn 我采用的是 腾讯云轻量应用服务器(2C 4G 8M 80G),配置如下图: 安装镜像选择 CentOS 7.6 64bit: 添加防火墙出入站规则,设置如下图: 把已备案的域名解析到服务器

    2024年02月14日
    浏览(39)
  • 博客首页效果

    学习来自风`宇blog的博客首页效果 全部用的基本上都是原生的html,css,js 特别是flex布局的使用,主轴方向可以是横轴,也可以是纵轴,弹性项还可可以使用百分比 sticky粘性布局,作为侧边栏,它不会超出右边的整体范围,也不会丢失原来所占的空间(相对定位特性),能固

    2023年04月12日
    浏览(36)
  • 二、创建个人首页页面

    改造 App.vue 创建一个展示页面,实现一个可以轮播的功能效果。⭐️ 欢迎访问个人的简历网站预览效果 本章涉及修改与新增的文件: style.css 、 App.vue 、 assets 一、 自定义全局样式 将 style.css 中的文件样式内容替换为如下代码 二、修改 App.vue 中代码 = To Be Continued 点赞 评论

    2024年02月09日
    浏览(41)
  • Github自定义个人首页

    GitHub 个人主页,官方称呼是 profile,是一个以 Markdown 脚本语言编写的个人 GitHub 展示主页面。Guthub 个人主页可以展示很多有用的信息,例如添加一个首页被访问次数的计数器,一个 Github 被 Star 与 Commit 的概览信息,以及各种技能标签,设备标签等,还可以利用 wakatime 显示你

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包