繁体   English   中英

如何使用ASP.Net MVC动态设置字段?

[英]How Can I Set a Field as Required Dynamically Using ASP.Net MVC?

我有几个字段只需要根据其他字段中的选择显示。 显示这些字段时,它们也是必需的。 首先,我试图隐藏视图中的字段。 但是,该字段在视图模型中设置为必需,因此ModelState返回为无效,因为该字段是必需的。 目前,我正在创建几种不同的视图模型来处理所有不同的可能性,但这很麻烦,因为视图中的表单有很多变体。 有没有更好的方法来获得我需要的结果? 例如,我可以只使用一个带有所有字段的模型,然后将它们隐藏在视图中,但只在需要显示它们时才需要它们吗? 也许我可以动态地在控制器的ActionResult中添加数据注释?

我在这里发现了另一篇可能是同一个问题的帖子: ASP.NET MVC 3:以编程方式添加DataAnnotation(RequiredAttribute)来查看模型

您可以实现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");
            }
        }
    }

另一种选择是MVC Foolproof验证

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM