验证 Valid
自定义验证特性
1 using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; 2 3 namespace MvcMovie.Validations 4 { 5 /// <summary> 6 /// 自定义验证Url特性 7 /// </summary> 8 public class ValidUrlAttribute : Attribute, IModelValidator 9 { 10 public string ErrorMessage { get; set; } = "无效的Url"; 11 public ValidUrlAttribute() 12 { 13 14 } 15 public ValidUrlAttribute(string errorMessage) 16 { 17 ErrorMessage = errorMessage; 18 } 19 public IEnumerable<ModelValidationResult> Validate(ModelValidationContext context) 20 { 21 var url = context.Model as string; 22 if (url != null && Uri.IsWellFormedUriString(url, UriKind.Absolute)) 23 { 24 return Enumerable.Empty<ModelValidationResult>(); 25 } 26 return new List<ModelValidationResult> 27 { 28 new ModelValidationResult(string.Empty,ErrorMessage) 29 }; 30 } 31 } 32 }
Model模型使用:
1 2 | [ValidUrl(ErrorMessage = "Url不正确" )] public string ? ConverUrl { get ; set ; } |
效果:
远程验证 Remote
客户端调用 Action 方法进行验证
Model 模型添加远程验证特性
1 2 | [Remote(nameof(UserController.CheckUserExist), "User" ,ErrorMessage = "用户已存在" )] public string UserName { get ; set ; } |
在 UserController 控件器中定义远程验证类:
1 2 3 4 5 6 7 8 9 10 11 12 13 | [AcceptVerbs( "Get" , "Post" )] public async Task<IActionResult> CheckUserExist([Bind(nameof(UserCreateViewModel.UserName))] string userName) { var user = await m_UserManager.Users.FirstOrDefaultAsync(x => x.UserName == userName); if (user == null ) { return Json( true ); } else { return Json( "用户已经存在" ); } } |
注意:必须在 View 底部添加脚本
1 2 3 4 5 | @section Scripts { @{ await Html.RenderPartialAsync( "_ValidationScriptsPartial" ); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)