【问题标题】:Add a placeholder to InputNumber in blazor在 blazor 中向 InputNumber 添加占位符
【发布时间】:2021-09-18 15:51:36
【问题描述】:

我有一个简单的问题,我想在 InputNumber 组件中添加一个占位符。
我尝试了这段代码,但它没有用。
//Code behind
public int? Hour { get; set; }
//razor page
<EditForm Model="FilteredEmployees">
  <InputNumber @bind-Value="Hour" min="0" class="form-control" max="10" placeholder="Hour"/> 
</EditForm>

感谢帮助。

【问题讨论】:

    标签: c# html blazor


    【解决方案1】:

    可能有多种原因,具体取决于您的代码设置方式。请尝试为可重复的示例添加更多代码,或显示您遇到的具体错误。

    如果此输入框显示 0 而不是“小时”,很可能是因为您使用的是和 int 支持字段而不是 int?支持领域。我只是仔细检查了它并具有支持属性

    public int? Hour { get; set; }
    

    当文本框内容为空时正确显示占位符文本。

    如果您遇到错误(例如空引用错误),很可能您忘记了 EditForm。请看https://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-5.0

    作为一个最低限度的例子: 无论有没有验证元素,这对我来说都可以正常工作

    @page "/"
    
    <EditForm Model="@this">
        @*<DataAnnotationsValidator />
        <ValidationSummary />*@
        <InputNumber @bind-Value="Hour" min="0" class="form-control" max="10" placeholder="Hour" />    
    </EditForm>
    
    @code {
        public int? Hour { get; set; }
    }
    

    【讨论】:

    • 非常感谢,我按照您所说的 int? backing field 进行了操作,当我遇到错误时,它会显示占位符的值,但我想显示一个占位符而不是 0
    • 如果我正确理解了您的上述评论,要获得预期的行为,您很可能需要添加一个支持字段,展开属性设置器以在设置为 0 时将其设置为 null。否则您会考虑更改组件逻辑,我不建议这样做。我还要看看你为什么要摆脱默认行为,(0 显示为 0,null 显示占位符)
    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2020-11-05
    • 2015-01-23
    • 2014-05-17
    • 2015-08-31
    • 2011-01-04
    相关资源
    最近更新 更多