MVC model字段自定义验证(ValidationAttribute)不执行---求助

pg204 2011-11-01 05:03:46
这是微软官方的文档.
http://msdn.microsoft.com/zh-cn/library/cc668224.aspx

按照他说的去实现.实现了一个验证类.如下
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)]
sealed public class GeneralTitleAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
Regex reg = new Regex(@"^[\u2E80-\u9FFF|a-zA-z]+$");
bool result = reg.IsMatch(value.ToString());
result = false;//这里先不管.一律不通过.
return result;
}
public override string FormatErrorMessage(string name)
{
return String.Format(ErrorMessageString, name);
}
}

然后我到实体模型里面添加验证.

[MetadataType(typeof(SysMenuTagMetaData))]
public partial class sysMenuTag
{
public class SysMenuTagMetaData
{
[Display(Name = "名称")]
[Required]
[StringLength(10, MinimumLength = 2)]
[GeneralTitle(ErrorMessage="验证不通过")]
public string smt_Name { get; set; }


把项目生成一次.浏览器中去看效果.
[Required]
[StringLength(10, MinimumLength = 2)] 这2个验证都有.我自定义的就是没...

他官方文档里没有说要注册啥的啊..

求高手帮忙.
...全文
502 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pg204 2011-11-01
  • 打赏
  • 举报
回复
自己找到问题了. 验证器应该继承至ValidationAttribute,IClientValidatable这 2个类.

ValidationAttribute public override bool IsValid(object value) 服务器端验证

IClientValidatable public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) 注册客户端验证.


之前我只实现了服务端验证.并且在post接收的时候没做任何处理.所以看不到效果.误认为是某个地方搞错了.

实在惭愧..
pg204 2011-11-01
  • 打赏
  • 举报
回复
人工置顶.....

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧