[英]How to use FormHelper and FluentValidation in .netcore 6 razor pages
我正在從 mvc 轉移到 razor 頁面,但似乎無法使用流利的驗證器和 FormHelper 進行驗證。
通常使用 mvc 模式
[FormValidator]
Public async Task<IActionResult> submitFormAction()
{
// do something
return View();
}
帶Razor頁面
public class AddModel : PageModel
{
public void OnGet()
{
}
[FormValidator] // *'FormValidator' cannot be applied to razor page handler method it may be applied to either Razor page model or applied globally*
public async Task OnPostAsync()
{
}
}
您是否查看過以下 package 以將 FluentValidation 集成到 ASP.NET 核心應用程序中?
我相信這將包括必要的擴展方法,以允許您將 FluentValidation 注冊為您想要用於執行驗證的服務。
您可以使用此 git 問題:
ASP.NET 核心 Razor 頁面 - 未調用 PageModel 的驗證器,即使正確調用了屬性的驗證器 #887
https://github.com/FluentValidation/FluentValidation/issues/887
對於其他面臨同樣問題的人。
問題出在FluentValidation
上,在以前的版本 .netcore 中,您可以通過簡單地注冊FluentValidation
服務
service.AddFluentValidation(config => config.RegisterValidatorsFromAssemblyContaining<StartUp>());
使用上面的代碼,.netcore 使用反射來注冊StartUp.cs
程序集中繼承AbstractValidator<T>
的所有類
但是對於 .netcore 6,我仍然必須使用上面的代碼,但將Startup
替換為Program
,因為 .netcore 6 不使用StartUp.cs
並且仍然必須隱式注冊驗證服務
builder.Services.AddTransient<IValidator<SomeClass>, SomeClassValidator>();
這對我有用,但我覺得它可以進一步簡化,因為如果我正在開發一個大型應用程序並且我有多達 20 個驗證器,我的Program.cs
將無法維護
PS:操作方法上的[FormValidator]
已過時,因為使用asp-FormHelper="true"
標記助手是可以的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.