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

如何向ASP.NET Core的Error错误视图传递scheduledWedding时间等自定义信息

实现方案

1. 扩展错误视图模型,新增婚礼时间字段

修改ErrorViewModel类,添加冲突的婚礼时间相关属性,兼容原有逻辑:

namespace LET.Panopto.Scheduler.Models
{
    public class ErrorViewModel
    {
        public string RequestId { get; set; }
        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
        
        // 新增冲突婚礼时间属性,设为可空避免非婚礼相关错误出现默认值
        public DateTime? ErrorEventStart { get; set; }
        public DateTime? ErrorEventEnd { get; set; }
        // 控制婚礼时间展示逻辑
        public bool ShowWeddingErrorTime => ErrorEventStart.HasValue && ErrorEventEnd.HasValue;
    }
}

2. 控制器返回错误视图时传入自定义数据

修改控制器中返回Error视图的逻辑,将触发异常的婚礼时间封装到模型中传递:

[HttpPost]
public async Task<IActionResult> ScheduleWeddingEvents(DateTime start, DateTime end)
{
    foreach(var scheduledWedding in EventScheduling.GenerateEvent(eventGroup))
    {
        if(scheduledWedding.EventStart <= DateTime.Now || scheduledWedding.EventEnd <= DateTime.Now)
        {
            // 构造错误模型传入视图
            return View("Error", new ErrorViewModel 
            {
                RequestId = HttpContext.TraceIdentifier,
                ErrorEventStart = scheduledWedding.EventStart,
                ErrorEventEnd = scheduledWedding.EventEnd
            });
        }

        if(scheduledWedding.EventStart > scheduledWedding.EventEnd)
        {
            return View("Error", new ErrorViewModel 
            {
                RequestId = HttpContext.TraceIdentifier,
                ErrorEventStart = scheduledWedding.EventStart,
                ErrorEventEnd = scheduledWedding.EventEnd
            });
        }

        result = EventMaker(result);
    }

    return View(result);
}

3. 错误视图添加婚礼时间展示逻辑

修改Error.cshtml,添加对应字段的展示代码:

@model ErrorViewModel
@{
    ViewData["Title"] = "Error";
}

<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>

@if (Model.ShowRequestId)
{
    <p>
        <strong>Request ID:</strong> <code>@Model.RequestId</code>
    </p>
}

@* 新增冲突婚礼时间展示 *@
@if (Model.ShowWeddingErrorTime)
{
    <p>
        <strong>冲突婚礼时间区间:</strong> 
        <code>开始时间:@Model.ErrorEventStart.Value.ToString("yyyy-MM-dd HH:mm")</code>
        <code>结束时间:@Model.ErrorEventEnd.Value.ToString("yyyy-MM-dd HH:mm")</code>
    </p>
}

<h3>Development Mode</h3>
<p>
    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
    <strong>Development environment should not be enabled in deployed applications</strong>, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>, and restarting the application.
</p>

如果不需要对外暴露这个时间,也可以加环境判断,仅在开发环境展示该字段即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:39:03