sách gpt4 ăn đã đi

c# - 自定义数据注释 IsValid 永远不会被调用。 (ASP.NET MVC 2.NET 4)

In lại 作者:太空狗 更新时间:2023-10-29 20:35:25 24 4
mua khóa gpt4 giày nike

我创建了一个自定义数据验证属性,以确保用户输入的密码相同,但永远不会调用 IsValid。

自定义属性:

public class IsSameAsAttribute : ValidationAttribute
{
public String TargetProperty { get; set; }
private readonly object _typeId = new object();

public IsSameAsAttribute(string targetProperty)
{
TargetProperty = targetProperty;
}

public override bool IsValid(object value)
{
trả về false;
//Type objectType = value.GetType();
//bool isValid = false;

//PropertyInfo[] neededProperties =
// objectType.GetProperties().Where(propertyInfo => propertyInfo.Name == TargetProperty).ToArray();

//return isValid;
}

public override object TypeId
{
get { return _typeId; }
}
}

适用的数据模型:

public class RegistrationData
{
[Required(ErrorMessage = "First Name Required")]
[StringLength(100, ErrorMessage = "First Name must be 100 characters or less.")]
public String FirstName { get; set;}

[Required(ErrorMessage = "Last Name Required")]
[StringLength(100, ErrorMessage = "Last Name must be 100 characters or less.")]
public String LastName { get; set; }

[Required(ErrorMessage = "Email is Required")]
[StringLength(200, ErrorMessage = "Email must be 200 characters or less.")]
[RegularExpression(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", ErrorMessage = "Valid Email Address is required.")]
public String Email { get; set; }

[Required(ErrorMessage = "Password is required")]
public String Password { get; set; }

[IsSameAs("Password")]
public String PasswordRepeat { get; set; }

[Required(ErrorMessage = "Division is required")]
public String Division { get; set; }

}

以及调用它的 Controller :

[HttpPost]
public ActionResult ValidationDemo(RegistrationData model)
{
if (ModelState.IsValid)
{
return Redirect("/");
}

return View(model);
}

所有“开箱即用”的验证都可以正常运行,只是我的自定义验证没有被调用。在进行调试时,我发现它在调用构造函数时被实例化,但 IsValid 上设置的断点永远不会命中。

这是怎么回事,我该如何解决?

gia hạn

好吧,我摆弄了一些,如果我在我的 Controller 中调用 TryUpdateModel(model),它最终会调用 IsValid。所以这对我来说意味着我的自定义属性没有在 MVC 2 中运行验证的任何内容中“注册”。有没有办法解决这个问题?

[HttpPost]
public ActionResult ValidationDemo(RegistrationData model)
{
TryValidateModel(model); // <--- *** Added this line and it "works"

if (ModelState.IsValid)
{
return Redirect("/");
}

return View(model);
}

câu trả lời hay nhất

我发现 MVC2 有类似/相同/相关的问题 - 仅当所有属性都正确验证时才会调用类级验证。

因此多个属性可能会失败,并且所有验证消息都会添加到模型状态(并显示在客户端上。)但是类级别的验证消息不在其中;这些 IsValid 只有在属性通过时才会被调用。从可用性的角度来看有点令人失望,但它确实有效。

KHÔNG调用 TryValidateModel()。

关于c# - 自定义数据注释 IsValid 永远不会被调用。 (ASP.NET MVC 2.NET 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3144926/

24 4 0
Đề xuất bài viết: python 包装
Đề xuất bài viết: c# - 高效的 foreach child 并行评估
Đề xuất bài viết: python - 如何写入 CSV 而不覆盖过去的文本
Đề xuất bài viết: python - 使用 Python 解析 lisp 文件
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress