我正在寻找关于实现执行以下操作的验证属性的最佳方法的一些建议.
模型
public class MyInputModel
{
[Required]
public int Id {get;set;}
public string MyProperty1 {get;set;}
public string MyProperty2 {get;set;}
public bool MyProperty3 {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我想至少使用一个值得到prop1 prop2 prop3,如果prop3是填充它的唯一值,它不应该等于false.我将如何为此编写验证属性(s?)?
谢谢你的帮助!
从现在开始,我使用了优秀的FluentValidation 库来验证我的模型类.在Web应用程序中,我将它与jquery.validate插件结合使用,以执行客户端验证.一个缺点是许多验证逻辑在客户端重复,不再集中在一个地方.
出于这个原因,我正在寻找替代方案.有许多例子出有表示数据注解的使用来执行模型验证.看起来很有希望.我无法找到的一件事是如何验证依赖于另一个属性值的属性.
我们以下面的模型为例:
public class Event
{
[Required]
public DateTime? StartDate { get; set; }
[Required]
public DateTime? EndDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想确保EndDate大于StartDate.我可以编写一个扩展ValidationAttribute的自定义验证属性,以便执行自定义验证逻辑.不幸的是我找不到获取模型实例的方法:
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value represents the property value on which this attribute is applied
// but how to obtain the object instance to which this property belongs?
return true;
}
} …Run Code Online (Sandbox Code Playgroud) 我DataAnnotations用于在ASP.NET MVC应用程序中ViewModel使用jquery.validate.unobtrusive和在服务器端验证我的客户端.
不久前,我发现我可以写这样的验证:
[Required(ErrorMessage = "{0} is required")]
public string Name { get; set; }
Run Code Online (Sandbox Code Playgroud)
这样我就可以在配置或资源中轻松定义一些通用字符串,并始终使用它DataAnnotations.因此,将来在整个应用程序中更改验证消息会更容易.
另外我知道有一个FluentValidation库允许向现有的验证规则添加验证规则ViewModel.我知道添加/编辑有一个问题ViewModels,可能有类似的字段,但ValidationRules不同.
客户端验证的另一个问题是,应该解析新添加到DOM的 html (使用ajax请求)以启用验证.我是这样做的:
$('#some-ajax-form').data('validator', null);
$.validator.unobtrusive.parse('#some-ajax-form');
Run Code Online (Sandbox Code Playgroud)
所以我有一些问题:
ViewModel验证问题的最佳方法?我可以使用DataAnnotations与FluentValidation或单独添加和编辑ViewModels仍然是最好的选择?我不是问如何创建自己的DataValidators我知道怎么做.我想方设法如何以更高效和易维护的方式使用它们.
c# validation asp.net-mvc data-annotations unobtrusive-validation
我有一个包含两个DateTime属性的MVC4 Prject的ViewModel:
[Required]
[DataType(DataType.Date)]
public DateTime RentDate { get; set; }
[Required]
[DataType(DataType.Date)]
public DateTime ReturnDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来使用C#属性[Compare("someProperty")]来检查天气,RentDate属性的值是否早于ReturnDate的值?
我使用Asp.Net MVC 2与实体框架4.情况如下:我有一个复选框和一个文本框(日期选择器).如果选中该复选框,则需要文本框.如果复选框为false,则不需要文本框.
Checkbox True => Textbox Required
Checkbox False =>不需要文本框
<%:Html.CheckBoxFor(model => model.oEnvironment.Remediate) %>
<%= Html.TextBoxFor(model => model.oEnvironment.DatePick)%>
Run Code Online (Sandbox Code Playgroud)
我知道如何创建ValidationAttribute但我不知道如何创建一个验证类来验证是否选中了复选框(如果我的实体修复属性为true),然后根据需要放置DatePick字段.
任何的想法 ?
validation entity-framework-4 validationattribute asp.net-mvc-2
是否可以进行不显眼的验证以使字段成为必需字段,但仅在其他属性发生变化时?
例如
[Required]
public Decimal Income {get; set;}
[Required]
public Decimal Tax {get; set;}
//Required if tax or income changes
public string ChangeReason {get; set;}
Run Code Online (Sandbox Code Playgroud)
我想过有多个后备存储字段并编写自定义验证器来比较这些,但是想知道是否有人有更好的建议?
我有一个MVC应用程序,它具有DropDownList和TextBox.我正在使用MVC验证,我很高兴.
目前DropDownList是[必需],但我想让它成为一个'其他:请指定'DropDownList的样式输入.
如何使DropDownList的[Required]属性以TextBox为空为条件?
这个问题很相似,但已经有一年多了.当前版本的MVC中的任何内容都使这很容易吗?