【发布时间】:2026-02-03 06:20:04
【问题描述】:
我尝试将我的 MongoDB 类模型链接到我的 Blazor 页面组件。我试图将所有 System.ComponentModel.DataAnnotations.ValidationAttribute 保留到一个接口,并让带有 Bson 装饰的“真实”类分开:
public interface ITestIt
{
int id { get; set; }
[Required(ErrorMessage = "Material cost is required")]
[StringLength(5, ErrorMessage = "Name is too long.")]
string MyName { get; set; }
}
public class TestIt : ITestIt
{
[BsonId]
public int id { get; set; }
public string MyName { get; set; }
}
并将其包含在我的页面中:
<h1>Hello, world!</h1>
Welcome to your new app.
<EditForm Model=@testIt OnValidSubmit="HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="form-group">
<label for="Name">Name</label>
<InputText @bind-Value=testIt.MyName class="form-control" id="Name" />
<ValidationMessage For="() => testIt.MyName" Description="Salut" />
</div>
<input type="submit" class="btn btn-primary" value="Save" />
</EditForm>
@code{
private ITestIt testIt;
private bool IsDone = false;
protected override async Task OnInitializedAsync()
{
if (IsDone) return;
testIt = new TestIt();
IsDone = true;
}
private void HandleValidSubmit()
{
Console.WriteLine("OnValidSubmit");
}
但是它不起作用,将两者分开的最佳方法是什么,而不必用 DataAnnotations 标签装饰我的所有数据模型,也不必将每个属性一个一个地复制到另一个对象?
谢谢!
【问题讨论】:
标签: mongodb validation blazor datamodel