加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC2中的REQUIRED String属性的服务器端验证实体

发布时间:2020-12-15 23:43:46 所属栏目:asp.Net 来源:网络整理
导读:我试图让一个实体框架字符串属性的服务器端验证工作.其他服务器端验证(如数据类型验证和所需的dateTime和数字EF属性)正在工作. 这在VS 2010,.Net 4.0,MVC2 Cloud,ADO.Net实体框架. 我有问题的字符串属性映射到SQL 2008,Varchar(50)不可空列. 当我尝试使用此
我试图让一个实体框架字符串属性的服务器端验证工作.其他服务器端验证(如数据类型验证和所需的dateTime和数字EF属性)正在工作.

这在VS 2010,.Net 4.0,MVC2 Cloud,ADO.Net实体框架.

我有问题的字符串属性映射到SQL 2008,Varchar(50)不可空列.

当我尝试使用此属性的空字符串发布到我的创建操作时,我会收到以下错误.

Exception Details: System.Data.ConstraintException: This property cannot be set to a null value.

当我以空白的方式发布到动作时,我成功获取了一个必需的字段验证消息.

我已经尝试使用数据注释和ClientSideValidation,但似乎有一些ClientSideValidation在部分视图和jquery对话框中工作.

这是实体框架的原始自动生成代码.

[EdmScalarPropertyAttribute(EntityKeyProperty=false,IsNullable=false)]
[DataMemberAttribute()]
public global::System.String GradeTypeName
{
    get
    {
        return GradeTypeName;
    }
    set
    {
        OnGradeTypeNameChanging(value);
        ReportPropertyChanging("GradeTypeName");
        _GradeTypeName = StructuralObject.SetValidValue(value,false);
        ReportPropertyChanged("GradeTypeName");
        OnGradeTypeNameChanged();
    }
}

根据Action方法(CREATE或EDIT)的签名,在调用UpdateModel()方法之前或方法中可能会发生异常.内部异常是在model.designer.cs文件的下方.

_GradeTypeName = StructuralObject.SetValidValue(value,false);

我已经能够在一个简单的mvc2 Web应用程序上重现.

解决方法

我有同样的问题一段时间.我在这里找到了一个解释: http://mvcmusicstore.codeplex.com/workitem/6604.简而言之,实体的属性验证引发了异常“System.Data.ConstraintException:此属性不能设置为空值”.当您的mvc应用程序尝试将表单域绑定到相应的实体属性(称为PreBinding验证,并在提交表单时发生),则会执行此验证.由于该字段为空(因此转换为null),绑定器尝试将一个空值绑定到该属性,这违反了您的实体的属性的非空限制.

但是,如果您发布一个空白字段(不同于空,因此为空)实体验证通过(因为该属性未设置为空值),然后您可以从“必需”注释验证看到该消息,该在预绑定之后执行(它是PostBinding验证).

解决方法是使用告示您的绑定器不将空字符串转换为空的[DisplayFormat(ConvertEmptyStringToNull = false)]注释.

[Required]
  [DisplayFormat(ConvertEmptyStringToNull = false)]
  public string YourStringProperty { get; set;}

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读