asp.net-mvc – 使用动态消息进行流畅验证
发布时间:2020-12-16 07:35:56 所属栏目:asp.Net 来源:网络整理
导读:我试图在流畅的验证库中使用动态消息构建自定义验证. 例如 : public class CreateProcessValidator : AbstractValidatorCreateProcessVM{ public CreateProcessValidator() { RuleFor(x = x.ProcessFile).Must((x,e) = IsProcessFileValid(x.ProcessFile)))
我试图在流畅的验证库中使用动态消息构建自定义验证.
例如 : public class CreateProcessValidator : AbstractValidator<CreateProcessVM> { public CreateProcessValidator() { RuleFor(x => x.ProcessFile).Must((x,e) => IsProcessFileValid(x.ProcessFile))).WithMessage("Parse failed with error : {0}"); } public bool IsProcessFileValid(HttpPostedFileBase file) { var errorMessage = "..." // pass result to validaton message ? // logic return false; } } 在这里有任何解决方法如何传递验证结果? 谢谢 解决方法
你尝试过这样的事吗?
public class IsProcessFileValid : PropertyValidator { public IsProcessFileValid(): base("{ValidationMessage}") {} protected override IsValid(PropertyValidatorContext context) { if (!IsProcessFileValid1(context)) context.MessageFormatter.AppendArgument("ValidationMessage","Custom validation message #1"); if (!IsProcessFileValid2(context)) context.MessageFormatter.AppendArgument("ValidationMessage","Custom validation message #2"); // ...etc return true; } private bool IsProcessFileValid1(PropertyValidatorContext context) { // logic return false; } private bool IsProcessFileValid2(PropertyValidatorContext context) { // logic return false; } // ...etc } 使用扩展方法: public static class IsProcessFileValidExtensions { public static IRuleBuilderOptions<T,object> MustBeValidProcessFile<T> (this IRuleBuilder<T,object> ruleBuilder) { return ruleBuilder.SetValidator(new IsProcessFileValid()); } } …然后在没有自定义WithMessage的情况下使用它: public CreateProcessValidator() { RuleFor(x => x.ProcessFile).MustBeValidProcessFile(); } 通过创建自定义PropertyValidator,您可以在该类中封装默认验证消息并使其动态化.但是,在声明RuleFor时,不得使用.WithMessage扩展名,因为这会覆盖您在PropertyValidator中直接自定义的默认验证消息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- C#使用Jquery zTree实现树状结构显示_异步数据加载
- asp.net – Web部署和文件夹权限
- asp.net – 如何将Enter键与aspx页面上的按钮相关联?
- 如何强制编译ASP.NET MVC视图?
- asp.net – 数据库交互/业务逻辑在MVC中发生在哪里?
- iis – 如何从服务器上的经典asp页面执行bat文件
- asp.net-mvc – Html.TextBoxFor在POST操作中不显示更新的值
- Asp.net mvc – 获取上传文件的完整文件名
- asp.net-mvc-3 – 如何在本地测试时禁用elmah发送电子邮件?
- jquery父元素和子元素点击事件传递问题_不可把父元素的事件
推荐文章
站长推荐
- asp.net-mvc-4 – mvc 4捆绑和缩小 – 当我刷新时
- 经典ASP和UTF-8
- asp.net-mvc-routing – 获取错误的路由并且Acti
- asp.net-mvc – 如果在@ Html.DisplayFor中有条件
- asp.net – 在VS2012中使用动态数据实体网站时出
- asp.net – 与web.config中的targetFramework相关
- asp.net-mvc – Href和Url.Content有什么区别?
- asp.net-mvc-3 – MVC3 Razor中的多语言实现
- asp.net-mvc – ASP.NET Web-API不序列化readonl
- ADO.NET读书笔记系列
热点阅读