【问题标题】:Update label on post using Razor Pages使用 Razor Pages 更新帖子上的标签
【发布时间】:2019-04-01 17:44:09
【问题描述】:

我正在尝试更新 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 方法执行并设置字符串属性时,它不会更新标签的文本。

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

【问题讨论】:

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


    【解决方案1】:

    你应该试试&lt;label asp-for="Confirmation"&gt;@Model.Confirmation&lt;/label&gt;

    顺便说一句,我怀疑您误用了标签元素。它旨在与同名的表单字段配对并呈现 HTML 标签。 Win Forms 和 Web Forms 使用 &lt;label&gt; 控件作为输出文本的通用占位符并没有帮助。在 Web 窗体中,它呈现为 &lt;span&gt;,这可能更合适(尽管您不会获得标签助手的帮助)。

    【讨论】:

    • 两个很好的答案。在这种情况下,我不需要使用 asp-for 标签,因为我只想显示文本。使用@Model.Confirmation 的更简单的方法就可以了。
    【解决方案2】:

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

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

    <label>@Model.Confirmation</label>
    

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 1970-01-01
      • 2016-06-23
      • 2019-12-31
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-21
      相关资源
      最近更新 更多