使用Razor页面更新帖子标签

时间:2018-10-28 18:00:23

标签: asp.net-mvc razor asp.net-core asp.net-core-mvc razor-pages

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

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. 我不希望在视图中显示“确认”一词,而是要显示属性“设置已保存!”的设置值。
  2. 此外,当执行post方法并设置string属性时,它不会更新标签的文本。

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

2 个答案:

答案 0 :(得分:1)

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

在旁注中,我怀疑您在滥用label元素。它旨在与同名的表单字段配对,并呈现HTML标签。 Win Forms和Web Forms使用<label>控件作为输出文本的通用占位符并没有帮助。在Web窗体中,它呈现为<span>,这可能更适合(尽管您不会获得标签帮助程序帮助)。

答案 1 :(得分:1)

标签标记帮助程序的工作方式类似于Html.LabelFor html帮助程序,它呈现属性名称(或属性的显示名称属性值)。您的属性名称为“确认”,因此在使用标签标记帮助器时会在输出中看到它。

如果要呈现该属性的值,则可以使用常规剃刀语法简单地打印它

<label>@Model.Confirmation</label>