asp.net mvc 验证 2 个字段 - 如果输入了其他字段,则其中一个字段必须存在

发布于 2025-01-07 20:56:01 字数 105 浏览 1 评论 0原文

我的视图模型中有 2 个文本字段,text1 和 text2。我需要验证是否输入了 text1,则必须输入 text2,反之亦然。如何在视图模型中的自定义验证中实现这一点?

谢谢。

I have 2 text fields, text1 and text2, in my view model. I need to validate if text1 is entered then text2 must be entered and vice versa. How can this be achieved in the custom validation in the view model?

thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

拥有 2025-01-14 20:56:01

您可以使用实现IValidatableObject(来自System.ComponentModel.DataAnnotations命名空间)在您的视图模型上进行服务器端验证:

public class AClass : IValidatableObject 
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string SecondName { get; set; }
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if( (!string.IsNullOrEmpty(Name) && string.IsNullOrEmpty(SecondName)) || (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(SecondName)) )
                yield return new ValidationResult("Name and Second Name should be either filled, or null",new[] {"Name","SecondName"});
        }
    }

现在它确保是否设置了Name和SecondName,或 null,则模型有效,否则模型无效。

You can use implement IValidatableObject (from System.ComponentModel.DataAnnotations namespace) for the server side validation on your View Model:

public class AClass : IValidatableObject 
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string SecondName { get; set; }
        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if( (!string.IsNullOrEmpty(Name) && string.IsNullOrEmpty(SecondName)) || (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(SecondName)) )
                yield return new ValidationResult("Name and Second Name should be either filled, or null",new[] {"Name","SecondName"});
        }
    }

Now it make sure if both Name and SecondName are set, or null, then model is valid, otherwise, it's not.

临风闻羌笛 2025-01-14 20:56:01

看看 mvc 的万无一失的验证,它做了条件验证。在 nuget 或 http://foolproof.codeplex.com 上找到它

编辑
上面的内容确实很旧,

我建议对任何现代的东西使用 MVC Fluent Validation https://docs .fluidation.net/en/latest/aspnet.html

Look at mvc foolproof validation it does conditional validation. Find it on nuget or http://foolproof.codeplex.com

Edit
The above is really old

I'd recommend MVC Fluent Validation for anything modern https://docs.fluentvalidation.net/en/latest/aspnet.html

森林很绿却致人迷途 2025-01-14 20:56:01

您可以使用 JQuery,如下所示:

$("input[x2]").hide();
    $("input[x1]").keypress(function() {
          var textValue = ("input[x1]").val();
         if(textValue) 
                      $("input[x2]").show();
        })

You can use JQuery, something like this:

$("input[x2]").hide();
    $("input[x1]").keypress(function() {
          var textValue = ("input[x1]").val();
         if(textValue) 
                      $("input[x2]").show();
        })
断肠人 2025-01-14 20:56:01

如果您想在模型上使用数据注释验证器和验证属性,您应该看看这个:
属性依赖于另一个字段

If you'd like to use a data annotation validator and validation attributes on your model, you should take a look at this:
" attribute dependent on another field"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文