我有几个字段,只需要根据其他字段中的选择来显示。当显示这些字段时,它们也是必需的。首先,我尝试隐藏视图中的字段。但是,该字段在视图模型中被设置为必填字段,因此 ModelState 返回为无效,因为该字段是必填字段。目前,我正在创建几个不同的视图模型来处理所有不同的可能性,但这变得很麻烦,因为视图中的表单有数十种变体。有没有更好的方法来获得我需要的结果?例如,我可以只使用一个包含所有字段的模型,然后将它们隐藏在视图中,但仅在需要显示时才需要它们吗?也许我可以在控制器的 ActionResult 中动态添加数据注释?
我发现另一篇文章可能是同样的问题:ASP.NET MVC 3:programmatically add DataAnnotation (RequiredAttribute) to view model
您可以实施IValidatableObject. 这样您就可以对模型属性进行条件验证。
public class MyViewModel : IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (Condition here)
{
yield return new ValidationResult("Validation error");
}
if (Other Condition here)
{
yield return new ValidationResult("Other Validation error");
}
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是MVC 万无一失的验证。
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |