gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 模型验证错误本地化上下文

转载 作者:行者123 更新时间:2023-12-02 09:39:00 24 4
gpt4 key购买 nike

首先,我必须说,我了解基于数据注释的模型验证在 ASP.NET MVC4 中的工作原理,并且我已使用 DataAnnotationsModelValidatorProvider 成功实现了它。因此我不需要设置方面的帮助。

但是当涉及到 HtmlHelpers 时,我正在努力尝试找出错误消息的上下文。通过说context,我指的是我们正在讨论的错误。哪个属性返回了错误?

我能得到的是错误的Key和当前的ErrorMessage,但以编程方式,至少我知道没有任何东西可以进行通信我们正在谈论哪个错误。无论是 Required 属性还是其他属性,我都无法找到如何区分它们。

让我们稍微打开一下场景。我有自定义 HtmlHelpers 来呈现 ContentEditable 元素。例如Html.ContentEditableValidationMessageFor(m => m.firstName);。它会输出类似这样的内容:

<span contenteditable="true" data-valmsg-for="firstName" data-valmsg-replace="Please provide first name" class="field-validation-error">Please provide first name</span>

现在,我有一个 jQuery 插件来处理和保存 contenteditable 元素中的更改,并将它们保存到后端。然而,用户界面没有任何内容可以说明我们正在讨论哪条错误消息。人们可以很容易地看到它是 RequiredAttribute,但是以编程方式,没有数据可以将它与某些 MinLengthAttribute 区分开来。

在这种情况下,如果我只是使用 data-valmsg-for="firstName" 作为本地化的 key ,那么对于与相同的属性。

四舍五入

当 ModelState 可用时,为 ModelError 发出唯一 ID 的最佳实践是什么?考虑到我正在使用 ASP.NET MVC4 和 DataAnnotationsModelValidatorProvider

我可以想出很多“Hack it Together”的方法,但我想使用 ModelState 以及 MVC 提供的任何内容。如果这一切都归结为编写一个自定义的 ModelValidatorProvider,那么我对此持开放态度。只要这是最好、最可持续的方式。我完全赞成现在多做事,以后少做事,而不是现在就破解它并永远破解它以保持其正常运行

最佳答案

您能否提供一些背景信息来了解哪个规则触发了验证错误,这是否是您尝试做一些不应该做的事情的情况?

一般来说,我使用 FluentValidation ( http://fluentvalidation.codeplex.com/wikipage?title=mvc ) 代替数据注释验证,原因有很多,整理模型、单元测试验证逻辑、允许包含业务逻辑的更复杂的验证。如果您可以免费使用第三方库,我会看看它,因为它总是解决我过去遇到的任何验证问题。

它允许您编写 C# 代码,通过流畅的 API 处理模型验证。它有一个 MVC 扩展,可以为您连接所有内容,因此除了创建模型验证类之外,从那时起几乎没有什么影响。上面的代码片段的示例是...

RuleFor(modelname => modelname.FirstName).NotEmpty().WithMessage("lease provide first name");

关于asp.net-mvc - ASP.NET MVC 模型验证错误本地化上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15252835/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com