如何停止从一个页面到另一个页面的剃刀部分持久状态消息

how to stop razor partial persisting status message from one page to another

我有一个剃须刀解决方案,其中包含在 Visual Studio 中的模板解决方案中。 partial中的代码只是一个状态信息,像这样:

@model string
@if (!String.IsNullOrEmpty(Model))
{
    var statusMessageClass = Model.StartsWith("Error") ? "danger" : "success";
    <div class="alert alert-@statusMessageClass alert-dismissible" role="alert">
        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        @Model
    </div>
}

在页面中,是这样引用的:

<partial name="_StatusMessage" model="Model.StatusMessage" />

在页面的页面模型中,消息的值设置如下:

       [TempData]
        public string StatusMessage { get; set; }

        public IActionResult OnGet(int regFlow)
        {
            StatusMessage = "Blah blah status message";
            return Page();
        }

问题是,虽然状态消息在相关页面上显示正常,但当我点击另一个也声明了 StatusMessage 部分的页面时它仍然存在 - 所以它仍然显示与上一页,但与当前页面完全无关。我怎样才能阻止它跨页面保留消息?

您已使用 TempData 注释了 StatusMessage,因此下一个 HTTP 请求也可以访问它。如果只需要在那个页面显示,为什么还要用TempData注解?