首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Asp.Net MVC4入门指南(8):给数据模型添加校验器

保持事情 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(Don’t Repeat Yourself)"。...StringLength属性允许您设置一个字符串属性的最大长度和其最小长度(可选)。...例如,下面的代码在调用SaveChanges方法时,将引发异常,因为缺失几个必需的Movie属性值,并且价格为零 (这在有效范围之外)。...对于字段是最初为空 (如创建视图中的字段) 和只有Required属性并没有其它验证属性的字段,您可以执行以下操作来触发验证: 1. Tab into the field. 2....这两个Helper方法将处理由控制器传递到视图的模型对象(在这里是,Movie对象)。它们会自动查找模型中指定的验证属性,并显示适当的错误消息。

4.7K100
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ASP.NET MVC 5 - 给数据模型添加校验器

    拒绝重复 DRY ASP.NET MVC 的核心设计信条之一是DRY: "不要重复自己(DRY --Don’t Repeat Yourself)"。...该字符串字段显示新的长度限制和流派字段(Genre)不能再为空。 验证属性指明您想要应用到模型属性的行为。...值类型(decimal, int, float, DateTime)有固有必需设置的,不需要的Required属性。...您在前面教程所创建的控制器和视图会自动启用,使用验证指明的Movie model类的属性。使用Edit行为方法,同样的验证方法也完全适用。直到没有任何客户端验证错误的表单数据,才会被发送回服务器。...例如,下面的代码总是显示一个客户端验证错误,即使当日期是在指定的范围内: [Range(typeof(DateTime), "1/1/1966", "1/1/2020")] 你可能会禁用jQuery的日期校验

    9.1K70

    C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间的特性

    同时,提供自定义用户界面来帮助开发人员配置组件或复杂数据类型的值,这可能也非常也用。  在此命名空间中定义的类和接口可用于生成组件的设计时行为、访问设计时服务,以及实现自定义的设计时配置接口。...Required [Required] 指定数据字段值是必需的,用户输入时不能为空。...(Inherited from Attribute) IsValid(Object) 检查必填数据字段的值是否不为空。...TypeConverter.StandardValuesCollection 表示值的集合。 TypeConverterAttribute 指定对于此属性绑定到的对象要使用哪种类型作为转换器。...Win32Exception 引发 Win32 错误代码异常。 5,Structs 结构体 SortDescription 定义要用作集合的排序条件的方向和属性名。

    4.3K30

    ASP.NET MVC基于标注特性的Model验证:ValidationAttribute

    如下面的代码片断所示,ValidationAttribute具有一个字符串类型的ErrorMessage属性用于指定验证错误消息。...如果我们通过ErrorMessage属性指定一个字符串作为验证错误消息,又通过ErrorMessageResourceName/ErrorMessageResourceType属性指定了错误消息资源项对应的名称和类型...对于错误消息的定义,我们可以定义一个完整的消息,比如“年龄必需在18至25之间”。...但是对于像资源文件这种对错误消息进行独立维护的情况,为了让定义的资源文本能够最大限度地被重用,我们倾向于定义一个包含占位符的文本模板,比如“{DisplayName}必需在{LowerBound}和{UpperBound...(因为Salary属性为非空值类型,被认为是必需的),另一个自然来源于应用在该属性上的RangeIfAttribute特性。

    1.8K110

    ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidatorProvider

    在《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator》中我们介绍了ASP.NET MVC用于Model验证的四种ModelValidator...对于非属性Model元数据,在直接调用GetTypeDescriptor方法得到Model类型描述对象,进而获取应用在Model类型上的所有特性并传入抽象方法GetValidators实现对针对Model...对于GetValidators的具体实现来说,如果Model类型实现了IDataErrorInfo接口,会基于制定的Model元数据和Controller上下文创建一个DataErrorInfoClassModelValidator...在通过Visual Studio的ASP.NET MVC项目模板创建的空Web应用中我们定义了如下一个实现了IDataErrorInfo接口的Contact类型。...前者对Contact对象本身实施验证,并将Error属性作为验证结果的错误消息;后者针对应的属性实施验证,验证结果的错误消息来源于将属性名称作为索引的值。

    1.4K10

    ASP.Net Web Page深入探讨

    只不过ASP.NET的框架看起来先进一点,不过JSP也在发展,似乎也出现了类似ASP.NET的框架。...然后在执行Page_Load的时候,因为这时候父类的声明已经被子类中的初始化代码赋了值,所以我们就可以使用这个字段来访问对应的控件,了解了这些,我们就不会犯在代码绑定文件中的构造器里使用控件,造成空引用的异常的错误了...PreRender 事件 (OnPreRender 方法) 保存状态 在此阶段后,自动将控件的 ViewState 属性保持到字符串对象中。此字符串对象被发送到客户端并作为隐藏变量发送回来。...同样这个方法对于Page来说,没有太大的用处,当然你也可以在Page的基础上自己定义数据更改的事件,这当然也是可以的。...这些内容是我在学习ASP.Net的时候对Page研究的一些心得,具体的细节没有很详细的探讨,更多的内容请大家参考MSDN,但是我举了一些初学者常犯的错误和出现错误的原因,希望可以给大家带来启发。

    2.1K70

    常见 Datagrid 错误

    以下是许多人所犯的一些错误,这些人包括从初学者到富有经验的 .NET 专家。您可以看到许多苦闷的使用者在 ASP.NET 新闻组和论坛就这些错误提出问题。...即使需要对 HTML 输出进行特殊的控制,您也可以在用户界面上记录集的内容重复出现的情况下,使用某个数据 Web 控件。...尽管可能创建动态 Datagrid,但它们会引发各种事件,这通常都会令人头疼。换句话说,不要动态创建控件,以避免因为创建控件使 ASPX 文件变得散乱。...这有违常规做法(以及上述第二个问题中的描述)。但如果禁用 ViewState,该步骤是必需的,这样在执行 Page_Load 后可以正确地引发其他 Datagrid 事件。...也可以考虑使用折衷的 DataList 控件,它具备编辑和排序功能,同时还具有在一行内重复显示记录的功能。

    2.4K20

    ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidator

    对于ASP.NET MVC基于标注特性的Model验证,很多人只知道应用在数据类型及其属性上用于定义验证规则和错误消息的ValidationAttribute。...通过《ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator》的介绍,我们知道了最终用于进行Model验证的是一个叫做ModelValidator...最后直接调用被封装的ValidationAttribute的GetValidationResult方法对指定对象实施验证,如果返回的ValidationResult对象不为空,则以此创建ModelValidationResult...用于返回错误消息的ErrorMessage属性来源对对ValidationAttribute的FormatErrorMessage方法的调用,而指定的参数就是当前Model元数据的DisplayName...由于只有RequiredAttribute才用于必需字段的验证,所有只有被封装ValidationAttribute为RequiredAttribute时其IsRequired属性返回True。

    1.1K110

    C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

    例子:传统的 C、C++ 代码通常属于非托管代码。与硬件交互的底层代码、操作系统的内核模块等也可以属于非托管代码。...2、文化差异DateTime.Parse 方法的行为受到当前线程的文化设置的影响,如果字符串中使用了与当前文化不同的日期时间格式,也可能导致解析错误。...3、空字符串或 null如果 myString 为 null 或空字符串,会引发 ArgumentNullException 或 FormatException。...即使没有活动的连接,连接池也会保持至少这么多数量的连接。2、Max Pool Size指定连接池的最大连接数。这是连接池能够创建的最大连接数限制。...它们被设计为在后台持续运行,即使用户没有登录到系统,服务也能执行。标准的 EXE 程序通常需要由用户手动启动,通常在用户登录后才能执行。

    28510

    代码质量规则

    这些实参也称为位置实参,因为它们将作为位置形参提供给特性构造函数。 对于每一个强制变量,特性还必须提供一个相应的只读属性,以便可以在执行时检索该变量的值。...CA1056:URI 属性不应是字符串 此规则假定属性表示统一资源标识符 (URI)。 URI 的字符串表示形式容易导致分析和编码错误,并且可造成安全漏洞。...CA1819:属性不应返回数组 即使属性是只读的,该属性返回的数组也不是写保护的。 若要使数组不会被更改,属性必须返回数组的副本。 通常,用户不能理解调用这种属性的负面性能影响。...这意味着,即使 objA 和 objB 都表示值类型的同一个实例,ReferenceEquals 方法也会返回 false。 CA2014:请勿在循环中使用 stackalloc。...如果通过在 throw 语句中指定异常来重新引发该异常,则引发该异常的原始方法与当前方法之间的方法调用的列表将丢失。 CA2201:不要引发保留的异常类型 这使得很难检测和调试原始错误。

    2.2K30

    【译】尝试使用Nullable Reference Types

    更正式的: AllowNull属性允许调用方传递空值,即使该类型不允许这样做。DisAllowNull属性不允许调用方传递null,即使该类型允许。...(bool)表示即使类型允许,参数也不能为空,条件是该方法的bool返回值。...MaybeNullWhen(bool)表示即使类型不允许参数为空,参数也可以为空,条件也是该方法的bool返回值。它们可以在任何参数类型上指定。...例如,一个异常帮助器方法,如果调用,它将引发异常;或者一个断言方法,如果输入为真或假,它将引发异常。 您可能希望做一些类似断言一个值是非空的事情,我们认为如果编译器能够理解的话,您也会喜欢它。...删除可为空的注释也会引入警告(例如,接口实现) 可以为空的注解是公共API不可分割的一部分。添加或删除注解会引入新的警告。

    3.8K10

    ASP.NET MVC以ModelValidator为核心的Model验证体系: ModelValidator

    具体在Model绑定过程中,ModelBinder通过ValueProvider为Model对象的某个属性提供相应属性值之后,会根据定义在基于该属性的Model元数据的验证规则实施验证。...ASP.NET MVC的整个Model验证系统以组件ModelValidator为核心,或者说Model对象的验证最终通过某个ModelValidator对象来完成,所以我们有必要先来认识一下ModelValidator...一般来说,当它们用于验证某个复杂类型对象的时候,针对于类型本身验证返回的ModelValidationResult对象的MemberName属性为空字符串;而对于针对属性验证来说,属性名称直接作为MemberName...如下面的代码片断所示,这两个ClientModelValidator用于表示验证数据类型的字符串分别是“number”和“date”。而表示错误消息的字符串是从内部维护的资源文件中获取的。...而对于该对象的属性的验证则采用另一个类型为DataErrorInfoPropertyModelValidator对象,DataErrorInfoPropertyModelValidator会将属性名称作为调用索引的参数从而获得相应的错误消息

    1.5K10

    译文:开发人员面临的 10个最常见的JavaScript 问题

    有趣的是,即使element从DOM中删除,上面的圆形自我引用也会防止element和onClick被收集,从而防止内存泄漏。...例如,对于许多JavaScript开发人员来说,以下一些内容是很麻烦的: 关于最后两个,尽管是空的(这可能会导致人们相信他们会评估为false),但{}和[]事实上,是对象,任何对象都将被迫在JavaScript...如果没有严格模式,对空或未定义的this值的引用会自动强制到全局。这可能会导致许多令人沮丧的错误。在严格模式下,引用this值为null或未定义会引发错误。 ·禁止重复的属性名称或参数值。...(它们是在非严格模式的包含范围内创建的,这也可能是JavaScript问题的常见来源。) ·无效使用delete时抛出错误。delete运算符(用于从对象中删除属性)不能用于对象的不可配置属性。...当尝试删除不可配置的属性时,非严格代码将默默失败,而在这种情况下,严格模式会引发错误。

    1.3K20

    Dart 变量

    使用空安全,Dart 编译器会在编译时检测这些潜在错误。例如,假设您想找到 int 变量 i 的绝对值。如果 i 为 null ,则调用 i.abs() 会导致空解引用错误。...相同的异常适用于 null 支持的属性或方法,例如 hashCode 或 toString() 。健全的空安全将潜在的 运行时错误 转换为 编辑时 分析错误。当非空变量已被:未初始化为非空值。...另一方面,在开发过程中,如果 condition 为假,则 assert(condition) 会引发异常。...延迟变量late 修饰符有两种用例:声明一个在声明后初始化的不可空变量。延迟初始化变量。通常,Dart 的控制流分析可以检测到在使用不可空变量之前何时将其设置为非空值,但有时分析会失败。...您可以更改非 final、非 const 变量的值,即使它以前具有 const 值:foo = [1, 2, 3]; // 以前是 const []您不能更改 const 变量的值:baz = [42]

    6500

    如何创建一个自定义的`ErrorHandlerMiddleware`方法

    所有的.NET应用程序都有可能会产生错误,并且不幸地引发异常,因此在ASP.NET中间件管道中处理这些异常显得非常重要。...这没有听起来那么糟糕:即使没有异常处理中间件,ASP.NET Core也会在其底层架构中捕获该异常,将其记录下来,并向客户端返回一个空白的500响应: ?...对于Web API客户端来说,这实际上还不错。您的API使用者应能够处理错误响应,因此最终用户将不会看到上面的“中断”页面。但是,它通常不是那么简单。...例如,也许您使用的是错误的标准格式,例如ProblemDetails格式。如果您的客户期望所有错误都具有该格式,那么在某些情况下生成的空响应很可能导致客户端中断。...我着重指出了默认Web API模板配置的问题,尤其是在客户端期望有效JSON的情况下,即使出现错误也是如此。

    2.2K10

    微软发布ASP.NET Core 2.2,先睹为快。

    这是自2.1 LTS宣布重新建立单独的LTS以来的首次发布,也是2.x生命周期中的最后一次非服务版本,包括一些新功能、增强功能和常规的错误修复,推荐大家使用。...Azure App Service中的可用性 .NET Core 2.2 SDK,运行时和更新的ASP.NET核心IIS模块正在部署到全球的Azure App Service区域。...某些区域可能会在更新的ASP.NET核心IIS模块(ANCM)之前收到更新的运行时,对于面向ASP.NET Core 2.2的项目,默认情况下这是必需的。这也是新的进程内托管功能的要求。...如果在部署到Azure App Service后收到启动错误,请尝试通过将AspNetCoreModule属性设置为值“AspNetCoreModule” 来配置项目以使用现有版本的ANCM ,例如:...版本更新目标区域后,您可以完全删除该属性并重新部署应用程序以使其切换到使用新的ANCM。

    3.4K40

    Dart 简介

    // 这是一个普通的单行注释。 /// 这是一个文档注释,用于记录库、类及其成员。IDE 和 dartdoc 等工具会特殊处理文档注释。 /* 也支持这样的注释。...其中一个属性不能直接设置,因此它是使用 getter 方法(而不是变量)定义的。该方法使用字符串插值在字符串文字内打印变量的字符串等效项。...launchDate; // 只读非 final 属性 int? get launchYear => launchDate?....如果您启用了空安全,除非您声明它们可以,否则变量不能包含 null。您可以通过在类型的末尾添加问号(?)来使变量可为空。例如,int? 类型的变量可能是整数,也可能是 null。...编译时错误会阻止代码完全执行;运行时错误会导致在代码执行期间引发异常。 原文:https://dart.wendang.dev/language/

    9510
    领券