Tag: validation

.NET 4 MVC 2使用注释警告而不是错误进行validation

我使用.NET 4和MVC 2来validationAnnotations。 是否有一个(简单的)解决方案来回复警告而不是错误 ? 这样我就能得到一个绿色或黄色的方框,上面写着“你不应该使用这些内容,但你可以”。 非常感谢提前! 🙂 编辑: 请注意我已经能够通过ErrorMessage丢弃错误但我还想要一些像WarningMessage或InfoMessage这样的东西,以便用户只收到警告但可能会继续。 这有解决方案吗? Pseudocode将是:( 请注意“伪”,因为WarningMessage (不幸的是)不是有效的类) public class Person { [StringLength(50)] [Required(ErrorMessage = “You MUST enter a name!”)] public string Name { get; set; } [Required(WarningMessage = “It is recommended to fill out the age but you may leave it out)] public int Age { get; set; […]

validation设计模式

我正在为我们的一个部门提供数据validation实用程序,该实用程序具有以下要求。 – 动态添加新业务实体 – 动态地向实体添加新validation。 – 用于显示业务实体及其有效性列表的UI – 用户可以选择在所有或选定的业务实体有效性上启动validation。 – 如果任何validation失败,UI将显示validation错误消息。 – 即使任何validation失败,系统也应继续进行下一次validation,从而validation所有已配置的validation。 在搜索互联网后,我发现以下2个承诺设计模式,满足我的业务需求一个id装饰模式,另一个是命令链(又称责任链)。 现在我的问题是哪个更好? 有人有更好的主意吗? 谢谢

ASP.NET MVC3双重validation(逗号,点,null)

我的控制器看起来像这样: public class PortefeuilleController : Controller { public ActionResult Create() { return View(new PortefeuilleViewModel{Saldo = 0.0}); } } 我的创建视图如下所示: @model PortefeuilleViewModel @{ ViewBag.Title = “Create”; } Create @using (Html.BeginForm()) { @Html.ValidationSummary(true) PortefeuilleViewModel @Html.LabelFor(model => model.Naam) @Html.EditorFor(model => model.Naam) @Html.ValidationMessageFor(model => model.Naam) @Html.LabelFor(model => model.Saldo) @Html.EditorFor(model => model.Saldo) @Html.ValidationMessageFor(model => model.Saldo) } 我的PortefeuilleViewModel看起来像这样: public class PortefeuilleViewModel […]

MVCvalidation – 使用服务层保持干燥 – 最佳做法是什么?

我试图坚持最好的多层设计实践,并且不希望我的MVC控制器与我的DAL(或任何IRepository)进行交互。 它必须通过我的业务服务层来执行适当的业务规则和validation。 validation – 我不想在我的域模型实体上使用各种validation属性(例如[必需])在控制器中执行validation,因为这揭示了我的前端。 更不用说这项服务也可以通过WPF前端实现。 由于我的validation是在我的服务层完成的,将值返回给UI的最佳做法是什么? 我不想要’void addWhatever(int somethingsID)’,因为我需要知道它是否失败了。 它应该是一个布尔值吗? 它应该是枚举吗? 我应该利用exception处理吗? 或者我应该在将validation属性装饰到Model对象时返回一些类似于MVC使用的IValidationDictionary对象? (如果需要,我可以在UI中使用适配器模式) 我想将我的实体从控制器传递到服务层,并了解validation/数据持久性是否失败。 我也不想忽视这样一个事实:我需要返回一个视图,指出可能validation失败的每个字段的正确错误消息(我希望尽可能保持无痛)。 我有几个想法,所有这些想法都不对。 我觉得答案包括特定于视图的模型实体,但这会导致必须处理的整个映射问题,更不用说这违反了DRY(不要重复自己)原则。 什么是最佳做法?

重构保护条款

人们采用什么方法(如果有的话)管理class级中的保护条款爆炸? 例如: public void SomeMethod(string var1, IEnumerable items, int count) { if (string.IsNullOrEmpty(var1)) { throw new ArgumentNullException(“var1”); } if (items == null) { throw new ArgumentNullException(“items”); } if (count < 1) { throw new ArgumentOutOfRangeException("count"); } … etc …. } 在我目前正在进行的项目中,有许多类在公共方法上具有类似的一组保护条款。 我知道.NET 4.0代码合同,但目前这不是我们团队的选择。

MVVM – validation

我们试图在mvvm中确定在业务逻辑或模型中进行validation的validation。 我在业务逻辑中实现了exception类型的validation – 可以在这里找到简化的图表: 如果我们有很多输入彼此独立,那么没有问题,抛出exception,文本框会抓住它,标记为每个错误输入的边框为红色。 但是,当我们有依赖值时,我们就遇到了麻烦。 例如 模型中的Value1和Value2必须不一样,所以我们在每个查找equals值的函数中都有一个validate函数,如果发生这种情况则抛出exception 现在,如果我们将Value1设置为0而将Value2设置为1,一切都很好 Value1在GUI中设置为1 – >这个被标记为红色,因为未触发其他值的validation,因此GUI中的Value2未标记为错误 在GUI中将Value2设置为2,现在我们已达到有效状态,但只有Value2得到validation,因此Value1仍被标记为有错 有没有一个共同的模式来解决这个问题? 我们不希望在两个文本框之间的GUI中引入依赖关系,因为此逻辑应仅存在于业务逻辑层中。 除了通过exception实现validation之外,还可以实现IDataErrorInfo接口,但问题仍然存在,没有办法强制依赖值再次validation它们的值,至少没有我能看到:) 任何帮助表示赞赏 欢呼,曼尼 [清理,删除不必要的步骤] 15.11.2010 – 第2部分 好的,在这里重新思考,我们将继续使用businesslogic层。 这是我们当前计划的配置: (图像在这里缩小了一点,请在单独的窗口打开以显示全尺寸)一切都或多或少都清楚,除了如果数据模型如何通知不同编辑器的所有视图模型/模型克隆在业务逻辑下变了。 一种方法是跟踪创建它们的业务逻辑中的克隆模型。 使用业务逻辑commit()更改数据模型时,可以将所有其他已注册的模型克隆通知更改并进一步传播它们。 或者,业务逻辑可以发布所有视图模型订阅的事件,以便他们也可以获得更改 – 任何人都可以给我一个提示更好的提示吗? 再次感谢您的帮助,对不起,我是如此精神错乱;)

自定义正则表达式未在客户端validation

我已经构建了一个自定义属性,以在客户端validation正十进制值。 问题是,当我将正则表达式直接应用于属性时,它工作正常,但是当我使用自定义属性时,它不起作用。 工作模式: [RegularExpression(@”^(?!0?(,0?0)?$)([0-9]{0,3}(,[0-9]{1,2})?)?$”, ErrorMessage = “Largura inválida.”)] [Required(ErrorMessage = “Largura obrigatória.”)] [Display(Name = “Formato Aberto”)] public decimal SizeOpenedWidth { get; set; } 自定义属性: public class PositiveDecimalAttribute : RegularExpressionAttribute { public PositiveDecimalAttribute() : base(“^(?!0?(,0?0)?$)([0-9]{0,3}(,[0-9]{1,2})?)?$”) { } } 集成在酒店: [PositiveDecimal(ErrorMessage = “Largura inválida.”)] [Required(ErrorMessage = “Largura obrigatória.”)] [Display(Name = “Formato Aberto”)] public decimal SizeOpenedWidth { get; […]

来自数据库的MVC模型validation

我有一个非常简单的模型,需要从数据库中进行validation public class UserAddress { public string CityCode {get;set;} } CityCode可以具有仅在我的数据库表中可用的值。 我知道我可以做点什么。 [HttpPost] public ActionResult Address(UserAddress model) { var connection = ; // create connection var cityRepository = new CityRepository(connection); if (!cityRepository.IsValidCityCode(model.CityCode)) { // Added Model error } } 这似乎非常WET因为我必须在很多放置时使用这个模型并且添加相同的逻辑,每个地方似乎我没有正确使用MVC架构。 那么,从数据库validation模型的最佳模式是什么? 注意:大多数validation是从数据库进行单字段查找,其他validation可能包括字段组合。 但是现在我对单场查找validation很满意,只要它是DRY并且没有使用过多的reflection就可以接受。 没有客户端validation: 对于在客户端validation方面回答的任何人,我不需要任何此类validation,我的大多数validation都是服务器端的,我需要相同的,请不要回答客户端validation方法。 PS如果任何人可以给我提示如何从数据库进行基于属性的validation,将会非常有用。

如何在上面一行的特定单元格填充后向数据视图添加新行?

我正在使用C#(.NET 4.0)开发桌面应用程序。 我有一个datagridview填充自定义对象,通过自定义(它inheritanceBindingList)BindingList(添加排序function)。 我使用cellValidating事件来正确地增加第一列(ID)并validation对其他单元格的输入。 问题是当我到达新行/最后一行并在一个单元格中输入内容时(我甚至可以在离开单元格之前删除所有输入)datagridview会自动将此行添加到绑定列表并在下面创建一个新行。 我希望只在正确填充上面的行(上一个新行)时添加最后一个/新行。 例 ID NAME PRICE … 1 Beer 2.6 2 Cheese 3.3 _ _______ ____ <- empty row 现在,如果我单击(输入),新行ID将自动设置为3,如果我将“点击”保留为“啤酒”单元格,则新行ID为空,所有默认值均为空(这是它应该和工作的方式)。 问题是如果单击/输入新行并为名称键入内容(即使我在离开单元格之前删除了内容),也会在此行下方添加一个新行,即新行。 因此,此行被添加到BindingList并且不完整,在正确填充所有必需单元格(例如价格)之前不应添加该行。 我不知道该怎么做。 请帮帮我,我对C#很新。 谢谢你的时间和答案。

防止ASP.NET Web应用程序上的SQL注入

我是C#和ASP.NET的新手。 我正在使用VS2005 C#和SQL Server 2005,并且已经做了一些关于防止SQL注入的研究 我的服务器端 Web应用程序中有几个函数,我不确定它们是否需要输入validation。 1)从工具箱登录控件。 我已经直接从VS Toolbox实现了登录控件,我尝试使用RegularExpressionValidator作为我的登录工具,但它似乎不起作用。 Microsoft是否已对该工具进行内置validation? 2)将Excel文件表上传到SQL Server数据库。 我有一个function,允许用户将Excel文件表上传到数据库中。 一开始我不觉得有必要validation它,因为没有打开的SQL查询,但之后我问自己是否有可能用户在excel文件中输入SQL查询,这将导致上传期间的SQL注入。 以下是我的上传代码片段,如果需要validation,我们期待提供建议: string connStr = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + strUploadFileName + “;Extended Properties=Excel 8.0;”; using (OleDbConnection connection = new OleDbConnection(connStr)) { string selectStmt = string.Format(“Select [COLUMNS] FROM [userlist$]”); OleDbCommand command = new OleDbCommand(selectStmt, connection); connection.Open(); Console.WriteLine(“Connection Opened”); // Create DbDataReader to Data […]