我正在使用 MVC 3。
我有一个文本区域,用户可以在其中输入多个电子邮件地址。电子邮件可以用逗号和空格分隔。用户也可以在框中按回车键。
是否有可以处理这种情况的属性?
我正在使用正则表达式来检查字符,但“abc@abc.com, tyz@tyz.com”失败
这是我的正则表达式: [RegularExpression(@"([a-zA-Z0-9 .@-_\n\t\r]+)", ErrorMessage = ValidationMessageConstants.EmailAdressInvalid)]
我在这里缺少什么?这个正则表达式来自以下帖子: DataAnnotations validation (Regular Expression) in asp.net mvc 4 - razor view
我装饰了一堂课:
[Required(ErrorMessage = "Price is required.")]
public decimal Price { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当用代码验证它时:
for each (PropertyInfo prop in Me.GetType().GetProperties())
{
if (prop.GetIndexParameters().Length = 0)
{
for each (ValidationAttribute validatt in prop.GetCustomAttributes(GetType(ValidationAttribute), True))
{
if (!validatt.IsValid(prop.GetValue(Me, Nothing))
{
retval.Add(New PropertyValidationError(prop.Name, string.Format("There is a problem with the {0} property. It is flagged with the {1}", prop.Name, validatt.GetType.Name), validatt.ErrorMessage));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现 的值0被视为满足“要求”,这不是我想要的(实际上,我想允许除零以外的任何值) - 是我的验证代码做错了,还是有没有一种方法可以将装饰与 a 一起ValidationAttribute用于值类型的默认值?
我正在尝试使用 RemoteAttribute 来验证使用 JSON 的数据元素服务器端。我的数据字段是:
[Display(Name = "My Number")]
[Required]
[Remote("IsValidMyNumber","Home",ErrorMessage="Bummer")]
public string MyNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的控制器是:
public JsonResult IsValidMyNumber(string MyNumber)
{
var test = services.ValidateMyNumber(MyNumber);
return Json(test,JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
我的观点是:
<div class="editor-field">
@Html.EditorFor(model => model.CheckInformation.MyNumber)
@Html.ValidationMessageFor(model => model.CheckInformation.MyNumber)
</div>
Run Code Online (Sandbox Code Playgroud)
生成的 HTML 是:
<input class="text-box single-line" data-val="true" data-val-remote="Bummer"
data-val-remote-additionalfields="*.MyNumber" data-val-remote-url="/Home/IsValidMyNumber"
data-val-required="The Number field is required." id="CheckInformation_MyNumber"
name="CheckInformation.MyNumber" type="text" value="" />
Run Code Online (Sandbox Code Playgroud)
当我调试并进入我的控制器时,“MyNumber”参数为空,即使我在它代表的文本框中有文本。
我知道文本框中的名称必须与参数中的名称相同,并且我已经验证了这一点。
有任何想法吗?
我正在尝试提出一个数据注释正则表达式来匹配以下格式。
34
38-30
100,25-30
4-5,5,1-5
基本上表达式应该只允许数字,-(破折号)和,(逗号)以任何顺序
我尝试遵循但无法使其正常工作。
[RegularExpression(@"(0-9 .&'-,]+)", ErrorMessage ="Lot numbers are invalid.")]
Run Code Online (Sandbox Code Playgroud) 我想验证CNIC号(计算国民身份证号)。我想从客户端获取输入(12345-1234567-1)除了破折号外没有任何字符。我写在下面的正则表达式
[RegularExpression("^[0-9]{5}-[-|]-[0-9]{7}-[-|]-[0-9]{1}")]
public string NICNo { get; set; }
Run Code Online (Sandbox Code Playgroud)
但是当我提交时,它会在验证错误中显示整个正则表达式,如下所示
可能我遗漏了一些东西,但有下面的模型
public class MyModel
{
public double WhateverButNotZero { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
是否有任何 MVC 内置 DataAnnotation 来验证数字为“除零之外的所有内容”?
我们正在使用DataAnnotations来验证我们的模型。
我们模型的一个非常简化的版本是:
public class Model
{
public List<Thing> Things;
}
public class Thing
{
[Required]
public string Name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
现在,有趣的是,如果我创建一个Thing没有名称的并将其添加到模型中,我希望验证失败,但它通过了(震惊!)。
var model = new Model ();
var invalidThing = new Thing (); // No name would fail validation
model.Things.Add(invalidThing );
var validationContext = new ValidationContext(model);
var validationResults = new List<ValidationResult>();
var isValid = Validator.TryValidateObject(model, validationContext, validationResults, true);
Assert.False (isValid); // This fails!
Run Code Online (Sandbox Code Playgroud)
我认为这样做的原因是当您验证模型时,它会验证每个属性,但如果它是一个集合,则不会验证属性中的项目。Things是一个没有验证的属性,所以它通过了(尽管它包含无效项目)。
我们如何确保验证也验证集合属性中的项目?我可以使用一些开箱即用的验证器吗?
我需要在模型中获取 ApplicationDbContext。
我正在创建一个 ValidationAttribute。该验证将检查数据库上的一些记录并在必要时生成错误。
public class MyModel
{
public int? ID { get; set; }
[MyValidationForName]
public string Name { get; set; }
}
public class MyValidationForName : ValidationAttribute
{
protected ValidationResult IsValid(object value, ValidationContext validationContext)
{
/* code here */
return new ValidationResult("This field contains an error");
}
}
Run Code Online (Sandbox Code Playgroud)
上面的示例在保存记录时会生成错误 (DataAnnotation)。可以只检查日期、长度等。
但是我必须查询数据库上的一些记录。为此,不能将数据库上下文传递给模型。
我读过的所有 SO 主题都解释了如何使用 Remote 和 JS 进行验证,将验证放在控制器上。我不想要这个。
最相关的 SO 主题是:在自定义验证属性中使用数据库上下文(通过添加上下文它仍然不起作用)
任何人都可以帮助我将 ApplicationDbContext 传递给模型以执行查询并使用 ValidationAttribute 对其进行验证吗?
假设我有一个form和值""时,选择form从视图发送到controller到action method,将asp.net core空字符串转换为NULL价值?
如果我不使该属性的布尔属性可以为空[required],则会出现以下错误:值 '' 无效。
这是否意味着:""被评估为NULL,布尔属性不允许NULL,asp.net 核心返回一个错误,说您不能将空传递string给Model属性,因为它不可为空,因为asp.net core将空字符串转换为 a NULL?
data-annotations ×10
c# ×6
asp.net-mvc ×5
regex ×3
.net-core ×1
asp.net ×1
asp.net-core ×1
opencv ×1
validation ×1