惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
V2EX
WordPress大学
WordPress大学
U
Unit 42
I
InfoQ
A
About on SuperTechFans
宝玉的分享
宝玉的分享
J
Java Code Geeks
博客园 - 司徒正美
爱范儿
爱范儿
Engineering at Meta
Engineering at Meta
G
Google Developers Blog
人人都是产品经理
人人都是产品经理
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
aimingoo的专栏
aimingoo的专栏
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
腾讯CDC
Recent Announcements
Recent Announcements

博客园 - TT.Net

netcore使用IdentityServer在nginx下502错误的解决 更新到.netcore3.0后找不到dotnet-ef的解决办法 openssh-win64 on windows2016 ssh pub key config 405 Method Not Allowed error with PUT or DELETE Request on IIS Server minikube windows hyperx填坑记 angular当router使用userhash:false时路由404问题 内网gitlab11.2升级至11.4.5 Angular7上手体验 - TT.Net - 博客园 ASP.NET MVC 3 Preview 1 发布 基于IPagedList 的 Asp.Net MVC 分页 Asp.net MVC +JQueryValidation + AjaxForm 自己用的一个ASP.Net MVC分页拿出来分享下 Microsoft MVC Preview 2 ActionFilterAttribute实际开发中的应用 [转]A Templated ASP.NET RSS Feed Reader Control ASP.NET MVC preview 1升级到ASP.NET MVC preview 2的一些更改 Microsoft ASP.NET MVC中Membership登陆的实现 今天遇到一个非常奇怪的问题 评:C#中一个字符串重复N倍的方法 常用的匹配正则表达式和实例
asp.net mvc + JqueryValidate(二)
TT.Net · 2010-05-11 · via 博客园 - TT.Net

上一篇 Asp.net MVC +JQueryValidation + AjaxForm 里简单完成了一下数据的效验

如果下载DEMO试过的朋友可能发现MyModel里定义的DataType=Url和DataType=EMailAddress的验证是没有生效的

这里来补充一下

这次就不做DEMO了,就2段代码加入一下就可以了

新建一个DataTypeValidator.cs

using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;namespace JqueryValidate
{
public class DataTypeValidator : DataAnnotationsModelValidator<DataTypeAttribute>
{
private readonly string message;public DataTypeValidator(ModelMetadata metadata, ControllerContext context, DataTypeAttribute attribute)
:
base(metadata, context, attribute)
{
message = attribute.ErrorMessage;
}
public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
var rules = new List<ModelClientValidationRule>();
ModelClientValidationRule rule;
switch (Attribute.DataType)
{
case DataType.EmailAddress:
rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "email"};
rule.ValidationParameters.Add("true", "true");
rules.Add(rule);
break;
case DataType.Url:
rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "url"};
rule.ValidationParameters.Add("true", "true");
rules.Add(rule);
break;
//case DataType.Date:
// rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "date"};
// rule.ValidationParameters.Add("true", "true");
// rules.Add(rule);
// break;
//case DataType.DateTime:
// rule = new ModelClientValidationRule {ErrorMessage = message, ValidationType = "date"};
// rule.ValidationParameters.Add("true", "true");
// rules.Add(rule);
// break;
}
return rules;
}
}
}

这里我把datetime这个注释掉了。因为jqueryvalidate的日期格式是 yyyy/mm/dd这样的,而我前台是yyyy年MM月dd日,而后台是支持这样的格式的,所以这里注释掉就让

HomeController.cs里的

 if (!ModelState.IsValid)
return JsonError(GetError(ModelState));

来返回json回传的错误吧

image

新建了上面那个继承自

DataAnnotationsModelValidator<DataTypeAttribute

的类后

还在要Global.ascx.cs的Application_Start里注册一下这个 DataAnnotationsModelValidatorProvider

            DataAnnotationsModelValidatorProvider.RegisterAdapter(typeof(DataTypeAttribute), typeof(DataTypeValidator));

前台代码不需要修改,URL和EMAIL的前台验证就完成了。

image

image

这里补上DEMO:/Files/francis67/MvcDemo.rar