使用 Razor Pages 更新 post 上的标签

Update label on post using Razor Pages

我正在尝试更新 Razor 页面中 http post 上的标签。我有一个名为 Confirmation 的 public 属性,如下所示:

public string Confirmation { get; set; }

然后我有我的post方法:

public async Task<IActionResult> OnPostAsync()
{
    //some conditional logic here
    Confirmation = "Settings saved!";
    return Page();
}

在我看来我有:

<label asp-for="Confirmation"></label>

然而,这呈现为:

<label for="Confirmation">Confirmation</label>
  1. 我不想在视图中显示单词 "Confirmation",而是 属性 的设置值 "Setting saved!"。
  2. 此外,当 post 方法执行并且我设置字符串 属性 时,它不会更新标签的文本。

我已经尝试将 OnGetAsync() 方法中的 Confirmation 属性 设置为“”,但这仍然会导致标签上显示相同的文本。

你应该试试 <label asp-for="Confirmation">@Model.Confirmation</label>

附带说明一下,我怀疑您滥用了 label 元素。它旨在与同名的表单字段配对并呈现 HTML 标签。 Win Forms 和 Web Forms 使用 <label> 控件作为输出文本的通用占位符也无济于事。在 Web 窗体中,它呈现为 <span>,这可能更合适(尽管您不会获得标签助手帮助)。

label 标签助手的工作方式类似于 Html.LabelFor html 助手,后者呈现 属性 名称(或显示 属性 的名称属性值)。您的 属性 名称是 "Confirmation",因此您在使用 label 标签助手时会在输出中看到它。

如果您想呈现 属性 的值,您可以使用普通的剃刀语法简单地打印它

<label>@Model.Confirmation</label>