如何使用MVC Razor实现基于日期动态切换文本功能
MVC Razor 实现日期切换显示文本的可行方案
方案1:视图直接硬编码判断(最简实现)
直接在.cshtml视图中嵌入C#逻辑即可完成判断,无需修改控制器代码:
<!-- 写法1:分支判断结构 --> <div id="test"> @if (DateTime.Now > new DateTime(2021, 12, 5)) { <text>A</text> } else { <text>B</text> } </div> <!-- 写法2:三元表达式精简写法 --> <div id="test"> @(DateTime.Now > new DateTime(2021, 12, 5) ? "A" : "B") </div>
注意:该方案取的是服务器端当前时间,和你之前JavaScript实现取的用户本地设备时间可能存在时区差异,如果业务需要严格对齐用户本地时间,可参考方案3
方案2:控制器传参实现(适合可配置场景)
如果日期阈值需要从配置文件、数据库动态读取,不要硬编码在视图中,可以通过控制器传值:
控制器代码示例
public IActionResult YourPage() { // 阈值可从配置/数据库动态获取,此处仅为示例 ViewBag.SwitchDate = new DateTime(2021, 12, 5); return View(); }
视图代码示例
<div id="test"> @(DateTime.Now > ViewBag.SwitchDate ? "A" : "B") </div>
方案3:结合JS保留客户端时间判断(对齐原JS逻辑)
如果需要完全和之前的JS逻辑一致,使用用户本地设备时间做判断,可以用Razor动态输出阈值,前端做判断:
<div id="test"></div> @section Scripts { <script> document.getElementById('test').innerHTML = new Date() > new Date('@new DateTime(2021,12,5).ToString("yyyy-MM-dd")') ? 'A' : 'B'; </script> }
内容的提问来源于stack exchange,提问作者iamnew
相关产品推荐
相关产品推荐

