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

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日期校验

9K70
您找到你想要的搜索结果了吗?
是的
没有找到

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.6K100

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

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

4K30

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

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

1.6K110

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 StudioASP.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.3K20

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

对于ASP.NET MVC基于标注特性Model验证,很多人只知道应用在数据类型及其属性上用于定义验证规则和错误消息ValidationAttribute。...通过《ASP.NET MVC以ModelValidator为核心Model验证体系: ModelValidator》介绍,我们知道了最终用于进行Model验证是一个叫做ModelValidator...最后直接调用被封装ValidationAttributeGetValidationResult方法对指定对象实施验证,如果返回ValidationResult对象不为,则以此创建ModelValidationResult...用于返回错误消息ErrorMessage属性来源对对ValidationAttributeFormatErrorMessage方法调用,而指定参数就是当前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 程序通常需要由用户手动启动,通常在用户登录后才能执行。

15510

代码质量规则

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

2.1K30

【译】尝试使用Nullable Reference Types

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

3.7K10

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.4K10

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

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

1.2K20

微软发布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

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

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

2.2K10

ASP.NET MVC下四种验证编程方式

我们采用具体验证规则如下。 Person对象Name、Gender和Age属性均为必需字段,不能为Null(或者空字符串)。...表示性别的Gender属性必需是“M”(Male)或者“F”(Female),其余均为无效值。 Age属性表示年龄必须在18到25周岁之间。...由于ASP.NET MVC自动提取应用在绑定参数类型上ValidationAttribute特性对绑定参数实施自动化验证,所以我们根本不需要在具体Action方法中来对参数作手工验证。...如下面的代码片段所示,IDataErrorInfo具有两个成员,只读属性Error用于获取基于自身错误消息,而只读索引用于返回指定数据成员错误消息。...在实现索引中,我们将索引参数columnName视为属性名称,根据它按照上面的规则对相应属性成员实施验证,并在验证失败情况下返回相应错误消息。

1.4K80
领券