gpt4 book ai didi

c# - 使用 ViewModel 进行验证

转载 作者:太空宇宙 更新时间:2023-11-03 21:54:32 25 4
gpt4 key购买 nike

我有一个带有 ado.net Entity Framework 的 asp.net mvc3 做一些验证。

我已经创建了一个 View 模型

public class id
{


[Required]
public decimal l_ID
{
get;
set;
}

[Required]
public decimal v_ID
{
get;
set;
}
}

是否可以添加一些验证规则,使 l_id 必须大于 v_id?一旦用户提交了页面,就应该进行验证。这将如何完成?任何教程?是否需要在 Controller 中或使用部分类来完成此验证?有例子吗

最佳答案

我一直在使用 IValidatable 接口(interface),与自定义属性验证相比,它相当简单。这是代码:

public class id : IValidatableObject
{
[Required]
public decimal l_ID { get; set; }

[Required]
public decimal v_ID { get; set; }

private bool _hasBeenValidated = false;

public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{

if (!_hasBeenValidated)
{
// validation rules go here.
if (l_ID <= v_ID)
yield return new ValidationResult("Bad thing!", new string[] { "l_ID" });
}

_hasBeenValidated = true;
}
}

请注意,当从将 ViewModel 作为参数的 POST 操作发生绑定(bind)时,将自动调用 Validate 方法,因此您无需对事件进行任何连接。 bool _hasBeenValidated 的东西在那里是因为现在 MVC3 中有一个准错误(恕我直言)在某些情况下调用该验证方法两次(比如当这个 ViewModel 也被用作另一个 ViewModel 并发布)

ValidationResult 构造函数的第二个参数是验证绑定(bind)到的属性的名称,因此在这种情况下, View 中 l_ID 的 ValidatorFor 标记会在其中收到“坏事”消息。

关于c# - 使用 ViewModel 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12825200/

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