首页 > 解决方案 > 如何停止从一页到另一页的剃刀部分持久状态消息

问题描述

我有一个剃须刀解决方案,其中一部分包含在 Visual Studio 的模板解决方案中。部分中的代码只是一条状态消息,如下所示:

@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" />

在它被放入的页面的pagemodel中,消息的值是这样设置的:

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

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

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

标签: .net-corerazor-pagespartials

解决方案


您已经使用 TempData 注释了 StatusMessage,因此下一个 HTTP 请求也可以访问它。如果它只需要显示在该页面中,为什么需要用 TempData 对其进行注释?


推荐阅读