File: ProductValidatorAttribute.cs
Web Access
Project: src\src\Mvc\test\Mvc.IntegrationTests\Microsoft.AspNetCore.Mvc.IntegrationTests.csproj (Microsoft.AspNetCore.Mvc.IntegrationTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.ComponentModel.DataAnnotations;
 
namespace Microsoft.AspNetCore.Mvc.IntegrationTests;
 
public class ProductValidatorAttribute : ValidationAttribute
{
    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var product = value as ProductViewModel;
        if (product != null)
        {
            if (!product.Country.Equals("USA") || string.IsNullOrEmpty(product.Name))
            {
                return new ValidationResult("Product must be made in the USA if it is not named.");
            }
            else
            {
                return null;
            }
        }
        var software = value as SoftwareViewModel;
        if (software != null)
        {
            if (!software.Country.Equals("USA") || string.IsNullOrEmpty(software.Name))
            {
                return new ValidationResult("Product must be made in the USA if it is not named.");
            }
            else
            {
                return null;
            }
        }
 
        return new ValidationResult("Expected either ProductViewModel or SoftwareViewModel instance but got "
            + value.GetType() + " instance");
    }
}