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

如何在ASP.NET MVC视图中仅当日显示编辑删除按钮?

问题分析与解决方法

你之前的两处错误:

  1. 第一次判断时,你拿变量Today和DateTime.Now.ToShortDateString()做比较——这俩本质是同一个值,所以判断永远为真,按钮一直显示。
  2. 第二次用Model.FirstOrDefault().DATE判断,这是取整个列表里第一个元素的日期,不是当前循环行的item的日期,而且你的DATE是可空类型(Nullable<DateTime>),直接和非可空的Today.Date比较会有类型匹配问题,甚至如果列表为空还会触发空引用异常。

正确的实现方式:

遍历每个item时,针对当前item的DATE字段做判断,同时处理可空类型的情况,只比较日期部分(忽略时间):

修改视图中循环内的判断代码:

@foreach (var item in Model) {
    <tr>
        <!-- 其他列代码保持不变 -->
        <td>
            @Html.DisplayFor(modelItem => item.sys_users1.user_name)
        </td>
        @* 修正后的判断逻辑 *@
        @if (item.DATE.HasValue && item.DATE.Value.Date == DateTime.Today)
        {
            <td>
                @Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
                @Html.ActionLink("Details", "Details", new { id = item.ID }) |
                @Html.ActionLink("Delete", "Delete", new { id = item.ID })
            </td>
        }
        else
        {
            <!-- 日期不符时显示空td,保证表格结构整齐 -->
            <td></td>
        }
    </tr>
}

关键说明:

  • item.DATE.HasValue:先判断DATE字段是否有值,避免可空类型的空引用问题
  • item.DATE.Value.Date:取出DATE的实际值后,只取日期部分(去掉时间),和DateTime.Today(当天日期,无时间)做比较,确保只要日期相同就显示按钮
  • else分支里保留<td></td>:避免表格结构错乱,保证每行的列数一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:47:03