【问题标题】:c#.net Custom Validation throwing an error when a field is editted correctlyc#.net 自定义验证在正确编辑字段时引发错误
【发布时间】:2015-12-04 12:55:54
【问题描述】:

我有以下简单的代码来检查成员的性别是否输入正确。

public partial class Member
{
    partial void OnGenderChanging(string value)
    {
        if (!((value.ToLower() == "male") || (value.ToLower() == "female")))
        {
            throw new ValidationException("Must be Male or Female.");
        }
    }
}

我对此很满意,而且它在大多数情况下都能正常工作。自定义验证已添加到包含现有数据的表中,并且在添加新成员记录时有效,并且还可以防止您将性别从可接受的(比如女性)更改为不可接受的(例如 f)。但是,表中的一条记录中的值不正确,并且是在添加验证之前输入的。当我尝试通过 DynamicData 提供的 edit.aspx 页面编辑记录以使性别为“男性”或“女性”时,它会抛出错误消息......即使新值是正确的。

我知道我可以直接在数据库中编辑它来解决它,但我真的很想知道后台发生了什么。为什么 OnChanging 事件似乎在这种特殊情况下查看原始值而不是新值?

如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 我们没有足够的信息:谁打电话给OnGenderChanging,什么时候打电话?

标签: c# asp.net validation


【解决方案1】:

当输入最初匹配“女性”时,您会抛出异常。检查你的 if 语句。

试试

 public partial class Member
{
    partial void OnGenderChanging(string value)
    {
        if (((value.ToLower() != "male") && (value.ToLower() != "female")))
        {
            throw new ValidationException("Must be Male or Female.");
        }
    }

【讨论】:

  • 请注意,您需要使用 AND 而不是 OR。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2014-04-24
  • 1970-01-01
  • 2019-07-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多