gpt4 book ai didi

asp.net-mvc - 属性级验证错误阻碍了类级验证的验证

转载 作者:行者123 更新时间:2023-12-04 11:44:52 26 4
gpt4 key购买 nike

获得赏金后更新

一个新的解决方案正在出现这个问题。请在此处引用 ASP.NET MVC 3 Preview 1:http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx

看版块模型验证改进 ,您将在其中看到我的问题的解决方案。

原帖

引用我之前的帖子 How to validate two properties with ASP.NET MVC 2我问我如何比较模型验证的两个属性。

我确实发现答案很有用,但我遇到了一个完全不同的问题:

问题 :如果属性级别的 ValidationAttribute 包含错误,则不会验证类级别的 ValidationAttributes。

请考虑以下事项:

[EqualTo("Email", "EmailConfirm", ErrorMessage = "E-mailadresserne skal være ens")]
[EqualTo("Password", "PasswordConfirm", ErrorMessage = "Adgangskoderne skal være ens")]
[Bind(Exclude="UserId")]
public class EditSiteUser
{
[Required(ErrorMessage="Du skal bekræfte adgangskode")]
public string PasswordConfirm { get; set; }

[Required(ErrorMessage="Du skal bekræfte e-mailadressen")]
[Email(ErrorMessage="Ugyldig e-mailadresse")]
public string EmailConfirm { get; set; }
public int UserId { get; set; }

[Required(ErrorMessage = "Du skal indtaste et brugernavn")]
public string Username { get; set; }

[Required(ErrorMessage = "Du skal indtaste en adgangskode")]
public string Password { get; set; }

[Required(ErrorMessage = "Du skal indtaste en e-mailadresse")]
[Email(ErrorMessage = "Ugyldig e-mailadresse")]
public string Email { get; set; }
}

这里我有两个类级别的属性来验证 EmailConfirm 和 PasswordConfirm。

如果像 Username 这样的字段为空,从而产生错误,则永远不会验证这两个 EqualTo 属性。

有没有人有解决这个问题的建议?

编辑:如果您需要有关此问题的更多信息,请在评论中提问,我很乐意为您提供所需的任何其他信息。

问题:

问:“为什么在属性级别检查失败时验证类级别检查很重要?”。

答:“因为这是表单的一部分,用户将信息输入到表单中,然后通过 AJAX 回发。当表单返回时,它应该显示所有当前问题。”

问:“您在类上放置的 EqualTo 属性究竟是什么?它是自定义验证属性吗?如果是,它是如何工作的?它有什么作用?”

答:EqualTo 是一个类级别的 ValidationAttribute,用于比较类实例的两个属性的值。查找“PropertiesMustMatchAttribute”以获得类似的实现。

最佳答案

这不受支持。如果任何属性级别验证失败,则不会执行类级别验证。建议你看MVC Foolproof Validation .它扩展了 MVC 验证以添加对偶然属性验证的支持。我认为这将解决这个特殊情况的问题。

项目站点声明它不适用于 MVC2 RC,因此您必须下载源代码并自行运行/采用他们的想法。

关于asp.net-mvc - 属性级验证错误阻碍了类级验证的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3099397/

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