问题描述
告诉我如何从输入字段中删除数字零。如何使字段为空? 我现在在文档中找不到描述。
谢谢您的帮助!
public class Bag
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public long Id { get; set; }
[required(ErrorMessage = "Обязательное поле")]
public long Bag_id { get; set; }
//public DateTime Report_Date { get; set; }
[required]
[Column(TypeName ="decimal(4,2)")]
public decimal Weigth { get; set; }
}
AddBags.razor
@page "/AddBags"
@using Extrasil.Data
@using Extrasil.Data.Models
@using Extrasil.Data.Controllers
@inject BagController objAddBags
@inject NavigationManager NavigationManager
<h3>Добавить мешок</h3>
<hr />
<form>
<div class="row">
<div class="col-md-8">
<div class="form-group">
<label for="Bag_id" class="custom-label">Номер мешка</label>
<input form="Bag_id" class="form-control" @bind="@bag.Bag_id" />
</div>
<div class="form-group">
<label for="Weigth" class="custom-label">Вес</label>
<input form="Weigth" class="form-control" @bind="@bag.Weigth" />
</div>
...
解决方法
您可能想要将类型更改为long的可为空。 long的默认值是0,因此如果绑定它,您将得到0。Nullable<long>
或long?
的默认值是null
,可能是您想要的效果。尝试更改属性的定义。
public class Bag
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public long Id { get; set; }
[Required(ErrorMessage = "Обязательное поле")]
public long? Bag_id { get; set; }
//public DateTime Report_Date { get; set; }
[Required]
[Column(TypeName ="decimal(4,2)")]
public decimal? Weigth { get; set; }
}
如果进行了这些更改,您仍然可以分别将长值和十进制值分配给这些属性,但是它将不再默认为0。
,您将必须将long
属性更改为可为空的long?
,如下所示:
public class Bag
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
public long? Id { get; set; }
[Required(ErrorMessage = "Обязательное поле")]
public long? Bag_id { get; set; }
}
正如我看到的那样,您正在对数据库和视图使用相同的模型,您可以创建一个单独的视图模型,并在其中添加可为空的属性,并使数据库实体模型保持为非空。