TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
/
注册
用户名
邮箱

ASP.NETCore模型验证消息的本地化实践指南

2025-06-24
/
0 评论
/
2 阅读
/
正在检测是否收录...
06/24

一、设置本地化支持

在 ASP.NET Core 中启用本地化,首先需要在 Startup.csConfigureServices 方法中添加本地化服务和请求本地化选项:

csharp public void ConfigureServices(IServiceCollection services) { services.AddLocalization(options => { options.ResourcesPath = "Resources"; // 指定资源文件存放的路径 }); services.AddControllersWithViews().AddDataAnnotationsLocalization(options => { options.ClientSideValidationLanguage = "en-US"; // 默认客户端验证语言为英语(美国) }); }

二、创建资源文件

接下来,为每种语言创建资源文件。例如,对于英文和中文,你可以在 Resources 文件夹下创建两个名为 ModelValidation 的资源文件:ModelValidation.en.resxModelValidation.zh-Hans.resx。在资源文件中,你可以为每个属性定义不同的验证消息:

  • ModelValidation.en.resx: 英文资源文件,定义英文的验证消息。
  • ModelValidation.zh-Hans.resx: 中文资源文件,定义中文的验证消息。

三、使用资源文件进行模型验证

在数据模型中,使用 [Display(Name = "Name", ResourceType = typeof(ModelValidation))][Required(ErrorMessageResourceType = typeof(ModelValidation), ErrorMessageResourceName = "NameRequired")] 等特性将数据注解与资源文件关联起来。例如:

csharp public class UserModel : IValidatableObject { [Required(ErrorMessageResourceType = typeof(ModelValidation), ErrorMessageResourceName = "NameRequired")] [Display(Name = "Name", ResourceType = typeof(ModelValidation))] public string Name { get; set; } // 其他属性... public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) => new List<ValidationResult>(); // 实现 IValidatableObject 接口的 Validate 方法(如果需要) }

四、自定义验证消息和规则

如果默认的验证规则不满足需求,可以自定义验证属性并使用 ErrorMessageResourceTypeErrorMessageResourceName 属性与资源文件关联:

csharp public class UserModel : IValidatableObject // 如果需要自定义验证规则,实现 IValidatableObject 接口并重写 Validate 方法。这里只是简单示例。 实际使用中应按需编写逻辑。 { // ... 其他属性... // 使用自定义验证规则示例 [Custom(ErrorType.Warning, ErrorMessageResourceType = typeof(ModelValidation), ErrorMessageResourceName = "CustomWarningMessage")] public int Age { get; set; } // 自定义验证逻辑应在这里实现 } // 在 ModelValidation.zh-Hans.resx 和 ModelValidation.en.resx 中定义 CustomWarningMessage 资源项。 具体值在具体上下文中定义。 // 例如: en: "Age is out of range." // zh-Hans: "年龄超出范围。" // 注意: 在此示例中 CustomAttributeAdapter 应被用于 DataAnnotationsModelValidatorFactoryOptions 中注册以支持自定义验证规则。 } // ... } 实际使用中,别忘了在 Startup.csConfigureServices 方法中为自定义验证注册一个自定义的 DataAnnotationsModelValidatorFactoryOptions。例如: services.AddControllersWithViews(options => { options.ModelValidatorFactoryOptions = new ModelValidatorFactoryOptions { CustomValidatorFactories = new List { new CustomValidatorFactory() } }); }); // ... // 其中 CustomValidatorFactory 是一个实现了 IValidatorFactory 的类,用于创建你的自定义验证器。

Asp.net Core模型验证(Model Validation)本地化(Localization)资源文件(Resource Files)自定义验证消息
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/30670/(转载时请注明本文出处及文章链接)

评论 (0)