You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor Pages中每次请求随机渲染div内元素的最佳实现方案

实现方案

直接在Razor视图内通过服务端代码完成集合乱序后循环渲染即可,无需前端JS参与,每次请求服务端都会生成新的随机顺序,是当前场景下最简洁规范的实现方式,且不需要修改现有控制器、ViewModel层代码。

具体修改步骤

1. 补充视图内的数据定义与乱序逻辑

修改页面顶部的Razor代码块,将硬编码的浏览器信息整理为集合,在每次请求时对集合做随机排序:

@{
    Layout = null;
    // 浏览器图标配置集合,请求时自动随机排序
    var supportedBrowsers = new[]
    {
        new { Icon = "../../app/assets/images/svg/chrome.svg", Alt = "Chrome", Name = "Google Chrome" },
        new { Icon = "../../app/assets/images/svg/firefox.svg", Alt = "Firefox", Name = "Mozilla Firefox" },
        new { Icon = "../../app/assets/images/svg/edge.svg", Alt = "Edge", Name = "Microsoft Edge" },
        new { Icon = "../../app/assets/images/svg/opera.svg", Alt = "Opera", Name = "Opera" }
    }.OrderBy(_ => Guid.NewGuid()).ToList();
}

2. 替换原硬编码的图标区块

将原来写死4个浏览器项的图标容器代码,替换为遍历乱序后集合的循环渲染逻辑,原有容器样式完全保留无需调整:

<div id="icons" style="flex-direction: row;  display: flex; align-items: center; justify-content: space-around; margin-top: 3em; margin-right: 9em; margin-bottom: 3em; margin-left: 9em">
    @foreach (var browser in supportedBrowsers)
    {
        <div>
            <img src="@browser.Icon" alt="@browser.Alt" width="100" height="100">
            <p style="text-align: center;">@browser.Name</p>
        </div>
    }
</div>

方案说明

  • 排序逻辑在服务端执行,页面返回给客户端时已经是随机完成的结构,不会出现前端加载时的顺序闪烁问题,性能开销可以忽略
  • 代码维护成本低,后续新增、删除支持的浏览器项时,只需要修改集合配置即可,无需重复编写冗余的HTML结构
  • OrderBy(_ => Guid.NewGuid())是.NET平台轻量级集合乱序的通用写法,足够满足当前业务场景的随机展示需求,无需引入额外的复杂随机算法
  • 完全兼容现有EPiServer的视图结构,不会影响页面原有其他内容的渲染逻辑

内容的提问来源于stack exchange,提问作者cowefe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 23:57:19