服务器环境:Centos mono2.10.8
出错页面详细描述:出错页面的实体层加了Model验证,部分代码如下:
/// <summary> /// 新闻Id /// </summary> [Required(ErrorMessage = " 新闻Id不能为空!")] [RegularExpression(@"[\d]*", ErrorMessage = "新闻Id格式不正确")] public int NewsId { get; set; } /// <summary> /// 分类 /// </summary> [Required(ErrorMessage = " 分类不能为空!")] [RegularExpression(@"[\d]*", ErrorMessage = "分类格式不正确")] public int CategoryId { get; set; } /// <summary> /// 新闻标题 /// </summary> [Required(ErrorMessage = " 新闻标题不能为空!")] [StringLength(45, ErrorMessage = " 新闻标题长度为45位之内!")] public string Title { get; set; } /// <summary> /// Tag /// </summary> [StringLength(45, ErrorMessage = " Tag长度为 45位之内!")] public string Tag { get; set; } /// <summary> /// 新闻摘要 /// </summary> [StringLength(45, ErrorMessage = " 新闻摘要长度为 45位之内!")] public string Summary { get; set; }
错误截图:
补充:经过测试,我在实体层去掉了模型验证代码就一切正常,正常代码如下:
/// <summary> /// 新闻Id /// </summary> public int NewsId { get; set; } /// <summary> /// 分类 /// </summary> public int CategoryId { get; set; } /// <summary> /// 新闻标题 /// </summary> public string Title { get; set; } /// <summary> /// Tag /// </summary> public string Tag { get; set; } /// <summary> /// 新闻摘要 /// </summary> public string Summary { get; set; }
这个我看过了,没给我带来什么帮助,请问能不能解决啊?怎么解决啊?
你打断点,看能不能跳跳到那个方法?
布曙在服务器上,无法调试
应该是mono在装箱拆箱的时候出错了,mono有个小bug,在object装箱拆箱的时候
请问怎么解决啊
看看mono版System.ComponentModel.DataAnnotations.RegularExpressionAttribute.IsValid方法的源码,这是CLR的:
public override bool IsValid(object value) { this.SetupRegex(); string str = Convert.ToString(value, CultureInfo.CurrentCulture); if (string.IsNullOrEmpty(str)) { return true; } Match match = this.Regex.Match(str); return ((match.Success && (match.Index == 0)) && (match.Length == str.Length)); }
你的View层不要用EditFor,用TextFor。