首页 > 解决方案 > Blazor,将 0 值绑定属性填充为输入中的空字符串

问题描述

你好我有一个问题,

所以我正在尝试使用 blazor,它很有趣,但我想知道什么时候绑定一个简单的模型,将一个 int 属性绑定到文本输入,例如:

<input type="text" class="communication__control--input" id="broadcast-port" autocomplete="off" placeholder=" " @bind="@this.Simple.Number" />

现在模型中的属性只是 int (不可为空),因此该输入的默认值为 0。所以我的问题是我可以让 0 在输入中显示为空字符串,如果我写任何值(例如 3 将显示为 3,但 0 将显示空字符串)它会绑定吗?

基于@Bennyboy1973 评论,基本上我可以使用 2 个属性,一个将绑定字符串 prop,另一个将是只读 int,它将尝试转换第一个,或者仅使用 2 个模型组合(例如 DTO 和后端模型)和 automapper . 但是有没有更简单的方法?

标签: c#blazor

解决方案


如果你真的想这样做,那么这很有效:

    <input type="text" @bind-value="model.Value" />

@code {

    public class Model
    {
        public string Email { get; set; }

        public string Value
        {
            get => _value != 0 ? _value.ToString() : string.Empty;
            set
            {
                if (int.TryParse(value, out int pvalue))
                    _value = pvalue;
                else
                    _value = 0;
            }
        }

        private int _value;
    }

我可以预见到在验证和编辑状态管理方面存在更高级情况的一两个问题,因此我可能会编写 Blazor 的自定义版本InputText


推荐阅读