标签: data-annotations

DataTypeAttribute验证是否在MVC2中有效?

据我所知,System.ComponentModel.DataAnnotations.DataTypeAttribute不适用于MVC v1中的模型验证.例如,

public class Model
{
  [DataType("EmailAddress")]
  public string Email {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,不会在MVC v1中验证Email属性.它在MVC v2中运行吗?

c# email validation asp.net-mvc data-annotations

21
推荐指数
3
解决办法
1万
查看次数

使用数据注释进行模型验证的错误消息

鉴于以下课程:

using System.ComponentModel.DataAnnotations;

public class Book{
   public Contact PrimaryContact{get; set;}
   public Contact SecondaryContact{get; set;}

   [Required(ErrorMessage="Book name is required")]
   public string Name{get; set;}
}
public class Contact{
    [Required(ErrorMessage="Name is required")]
    public string Name{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

有没有干净的方式我可以给每个实例的不同错误信息ContactBook使用DataAnnotations?例如,如果PrimaryContact实例中缺少名称,则错误将显示为"需要主要联系人姓名".

我目前的解决方案是创建一个验证服务,检查模型状态是否存在字段错误,然后删除所述错误并使用我喜欢的特定语言将其添加回来.

c# validation asp.net-mvc annotations data-annotations

21
推荐指数
2
解决办法
6万
查看次数

Web API可空必需属性需要DataMember属性

我在Web API Post操作上收到以下VM

public class ViewModel
{
    public string Name { get; set; }

    [Required]
    public int? Street { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

当我发帖时,我收到以下错误:

"ViewModel"类型的媒体"街道"无效.标记为[必需]的值类型属性也必须标记为[DataMember(IsRequired = true)],以便根据需要进行识别.考虑使用[DataContract]归因声明类型,使用[DataMember(IsRequired = true)]归因属性.

似乎错误是明确的,所以我只想完全确定当你有一个具有必需的可空属性的类时,需要使用[DataContract]和[DataMember]属性.

有没有办法避免在Web API中使用这些属性?

asp.net-mvc data-annotations asp.net-web-api

21
推荐指数
1
解决办法
9954
查看次数

ASP.NET MVC ValidateInput(false)停止使用xVal和[RegularExpression] DataAnnotation

我想通过正则表达式验证器截取表单字段中的"<"字符.我将分三个步骤描述问题:

第1步:当我尝试提交一个包含"<"字符的字段的表单时,我得到了"潜在危险请求..." - 正如ASP.NET中预期的那样.

第2步:为了避免ASP.NET的RequestValidation,我使用"[ValidateInput(false)]"在控制器中修饰我的Update方法.

它按预期工作 - 现在我可以毫无错误地发布"<"字符.

第3步:我将xVal与DataAnnotations一起使用.例如,[Required]或[StringLength(255)]按预期工作.

但是当我使用时:[RegularExpression("^ [^ <>]*$",ErrorMessage ="不允许使用特殊字符.")],我再次收到"潜在的dangeros请求..."错误,尽管[ValidateInput] (假)]指令.

发生了什么?有没有更简单的正则表达式验证方法,但是[ValidateInput(false)]到位了吗?当然,我想在模型中使用验证码,而不是在控制器中.

validation asp.net-mvc xval data-annotations

20
推荐指数
1
解决办法
2570
查看次数

在MVC之外使用ASP.Net MVC数据注释

我想知道是否有一种方法可以在没有MVC网站的情况下使用ASP.Net的数据注释.

我的例子是我有一个曾经创建过的类需要验证,否则会抛出错误.我喜欢数据注释方法,而不是initaliser发出的一堆if块.

有没有办法让这个工作?

我以为它会是这样的:

  • 添加数据注释
  • 在初始化器中触发一个方法,该方法在类上调用MVC验证器

有任何想法吗?我必须承认我没有将MVC框架添加到我的项目中,因为我希望我可以使用数据注释类System.ComponentModel.DataValidation

c# asp.net-mvc class-library data-annotations

20
推荐指数
1
解决办法
7056
查看次数

ASP.NET MVC数据注释使用继承的RegularExpressionAttribute进行客户端验证

为了保持我的模型验证干净,我想实现我自己的验证属性,比如PhoneNumberAttributeEmailAttribute.其中一些可以有利地实现为继承的简单类RegularExpressionAttribute.

但是,我注意到这样做会破坏这些属性的客户端验证.我假设有某种类型的绑定在某处失败.

我能做些什么来让客户端验证工作?

代码示例:

public sealed class MailAddressAttribute : RegularExpressionAttribute
{
    public MailAddressAttribute()
        : base(@"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$")
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

regex asp.net asp.net-mvc client-side-validation data-annotations

20
推荐指数
2
解决办法
5327
查看次数

属性是[必需]和可空的是什么意思?

对于一个属性[Required]和可空的属性意味着什么?(下面的例子)似乎如果它[Required]不可能null(没有价值),如果它能够是null它不可能是[Required].

[Required]
public DateTime? OrderDate { get; set; }
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc data-annotations

20
推荐指数
4
解决办法
6525
查看次数

了解DataAnnotations中的ValidationContext

我想利用Validator.TryValidateValue()但不了解机制.说,我有以下内容:

public class User {
    [Required(AllowEmptyStrings = false)]
    [StringLength(6)]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和方法:

public void CreateUser(string name) {...}
Run Code Online (Sandbox Code Playgroud)

我的验证码是:

ValidationAttribute[] attrs = bit of reflection here to populate from User class
var ctx = new ValidationContext(name, null, null);
var errors = new List<ValidationResult>();
bool valid = Validator.TryValidateValue(name, ctx, errors, attrs);
Run Code Online (Sandbox Code Playgroud)

它工作正常,直到值namenull.我ArgumentNullException在实例化时得到ValidationContext并且不明白为什么.TryValidateValue()还要求非空上下文.我有一个值和一个要验证的属性列表.这是ValidationContext为了什么?

.net validation .net-4.0 data-annotations

19
推荐指数
1
解决办法
3万
查看次数

使用Data Annotation验证DateTime(日期和小时)

我有以下代码:

        [DisplayName("58.Date and hour of birth")]
        [DataType(DataType.DateTime, ErrorMessage = "Please enter a valid date in the format dd/mm/yyyy hh:mm")]
        [Range(typeof(DateTime), "1/1/2011", "1/1/2016")]
        [RequiredToClose]
        public object V_58 { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想强制包含时间(格式为hh:mm)而不仅仅是日期.此代码将1/1/2011视为有效,因为它不包含小时,有关如何表达正确格式的任何线索?(dd/mm/yyyy hh:mm)

asp.net-mvc datetime data-annotations

19
推荐指数
1
解决办法
4万
查看次数

MVC数据注释范围验证无法正常工作

RangeValidator在我的模型中有一个属性,只允许0到100之间的整数.我有一个部分视图,显示一个表单,通过jQuery UI对话框更新属性.我查看了源代码,可以确认正确生成了数据注释属性.但是,验证无法正常工作.它确实执行某种验证,但它没有使用我设置的范围.值1,10和100不会产生错误.任何其他单个或两个数字值都会产生错误.但是,如果我用零填充,所有小于100的值都可以.

模型:

public class MyModel
{
  ...
  [Required(ErrorMessage = "{0} is required")]
  [Range(typeof(int), "0", "100", 
         ErrorMessage = "{0} can only be between {1} and {2}")]
  public int Percentage { get; set; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

局部视图:

@model MyApp.Models.Partials.MyModel

<div id="myDialog" class="editModal" title="Update Percentage">
  @using (Ajax.BeginForm("UpdatePercentage", "MyController", 
                         new AjaxOptions() { HttpMethod = "Post", 
                                             OnSuccess = "onUpdateSuccess" }, 
                         new { name = "myForm" }))
  {
    @Html.ValidationSummary(null, new { style = "width:auto;max-width:22em;               
                                                 float:left;clear:both;" })    
    <div style="width:auto;float:left;clear:both;">
      <div style="width:10em;float: left;text-align:right;clear:left;">
        @Html.Label("Percentage:")
      </div> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc jquery-ui asp.net-mvc-validation data-annotations asp.net-mvc-3

19
推荐指数
1
解决办法
3万
查看次数