相关疑难解决方法(0)

DataAnnotations:递归验证整个对象图

我有一个带有DataAnnotation属性的对象图,其中对象的某些属性是本身具有验证属性的类,依此类推.

在以下场景中:

public class Employee
{
    [Required]
    public string Name { get; set; }

    [Required]
    public Address Address { get; set; }
}

public class Address
{
    [Required]
    public string Line1 { get; set; }

    public string Line2 { get; set; }

    [Required]
    public string Town { get; set; }

    [Required]
    public string PostalCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试来验证EmployeeAddress与没有价值PostalCode,那么我想(和期望)例外,但我得到没有.我是这样做的:

var employee = new Employee
{
    Name = "Neil Barnwell",
    Address = new Address …
Run Code Online (Sandbox Code Playgroud)

.net c# validation recursion data-annotations

52
推荐指数
2
解决办法
2万
查看次数

如何强制MVC验证IValidatableObject

似乎当MVC验证模型时,它首先运行DataAnnotation属性(如required或range),如果其中任何一个失败,它会跳过在我的IValidatableObject模型上运行Validate方法.

有没有办法让MVC继续运行该方法,即使其他验证失败了?

validation asp.net-mvc-3

32
推荐指数
2
解决办法
2万
查看次数

如何在数据库实体的子模型上使用自定义验证属性?

摘要:

我想要一个数据注释验证器来引用同一个类中的另一个属性(TitleAuthorAndPublishingConfiguration).

但是,不直接在此类上调用DB.SaveChanges().而是在这个类(WebsiteConfiguration)的父级上调用它.

因此validationContext.ObjectType返回WebsiteConfiguration,我无法引用TitleAuthorAndPublishingConfiguration数据注释验证器中的属性.


WebsiteConfiguration.cs

public class WebsiteConfiguration
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ID { get; set; }

    public TitleAuthorAndPublishingConfiguration TitleAuthorAndPublishing { get; set; }

    public BookChaptersAndSectionsConfiguration BookChaptersAndSections { get; set; }

    public SocialMediaLoginsConfiguration SocialMediaLogins { get; set; }

    public TagGroupsConfiguration TagGroups { get; set; }
}

public class TitleAuthorAndPublishingConfiguration 
{
    public string BookTitle { get; set; }

    public bool IsPublished { get; set; }

    // how do I access …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc data-annotations dbcontext

12
推荐指数
1
解决办法
995
查看次数

如何验证嵌套模型?

问题:
我尝试验证嵌套模型,但在嵌套模型实例创建时,数据注释属性未执行.

public class Model
{
    [Required]
    string MainTitle {get;set;}

    public NestedModel NestedModel { get; set; }
}
public class NestedModel
{
    [Required]
    string SubTitle {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

在控制器:

public ActionResult GetTitles(Model model)
{
    if(ModelState.IsValid)
    {
       //Submodel is always valid even if the sub-title is null.
    }
}
Run Code Online (Sandbox Code Playgroud)

Mvc4不支持吗?如何将验证扩展到这方面?

c# data-annotations asp.net-mvc-4

8
推荐指数
1
解决办法
3697
查看次数

自定义类的 Blazor 验证

我正在测试 Blazor,但遇到了验证问题。在验证一个简单的类时,我可以只使用注释。如果我有自己的自定义类,尽管验证不会对我的自定义类中的所有内容运行。该问题似乎特定于 Blazor,因为我可以在 ASP 中使用此验证。

这是我的两个简单模型:

public class TestModel
{
    [Required]
    [Range(12, 400, ErrorMessage = "This works")]
    public int Count { get; set; }

    public KeyValue KeyValues { get; set; }
    public TestModel()
    {
        Count = 4;
        KeyValues = new KeyValue()
        {
            Key = 5,
            Value = "str"
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

和 KeyValue 类

public class KeyValue
{
    [Required]
    [Range(10, 300, ErrorMessage = "This number check doesn't")]
    public int Key { get; set; }
    [Required]
    [StringLength(10, MinimumLength = 5, ErrorMessage …
Run Code Online (Sandbox Code Playgroud)

c# validation .net-core blazor

7
推荐指数
2
解决办法
3262
查看次数

使用ASP.NET MVC 2.0支持嵌套模型和类验证

我正在尝试使用System.ComponentModel.DataAnnotations属性验证包含具有验证规则的其他对象的模型,希望默认的MVC实现就足够了:

var obj = js.Deserialize(json, objectInfo.ObjectType);
if(!TryValidateModel(obj))
{
    // Handle failed model validation.
}
Run Code Online (Sandbox Code Playgroud)

该对象由原始类型组成,但也包含其他也使用DataAnnotications的类.像这样:

public class Entry
{
    [Required]
    public Person Subscriber { get; set; }

    [Required]
    public String Company { get; set; }
}

public class Person
{
    public String FirstName { get; set;}

    [Required]
    public String Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是ASP.NET MVC验证只降低了1级,只评估顶级类的属性,可以在digitallycreated.net/Blog/54/deep-inside-asp.net-mvc-2上阅读-model-元数据和验证.

有谁知道这个优雅的解决方案?我尝试过xVal,但它们似乎使用了非递归模式(http://blog.stevensanderson.com/2009/01/10/xval-a-validation-framework-for-aspnet-mvc/).

有人必须在此之前遇到这个问题吗?如果您正在设计Web服务,那么在模型中嵌套对象似乎并不那么奇怪.

validation asp.net-mvc asp.net-mvc-2-validation data-annotations asp.net-mvc-2

6
推荐指数
1
解决办法
2153
查看次数

ASP.NET MVC4中复杂类的验证失败

遇到了使用DataAnnotation验证ASP.NET MVC4中复杂类的问题.

让我们有一个以下模型(简化)

public class Customer
{
   [Required]
   [StringLength(8, MinimumLength = 3)]        
   public string UserName { get; set; }

   [Required]
   [StringLength(8, MinimumLength = 3)]
   public string DisplayName { get; set; }
}


public class Order
{
    public Customer customer { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试在我的控制器中验证此模型的实例:

// CREATE A DUMMY INSTANCE OF THE MODEL 
Customer cust = new Customer();
cust.UserName = "x";
cust.DisplayName = "x";

Order orderModel = new Order();
orderModel.customer = cust;

// VALIDATE MODEL
TryValidateModel(orderModel); // ModelState.IsValid is TRUE …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc

6
推荐指数
1
解决办法
925
查看次数

自定义验证属性在同一字段上多次

如何在同一字段上多次使用相同的自定义验证属性,或者只是为服务器端和客户端验证启用AllowMultiple = true?

我有以下自定义验证属性:

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, 
        AllowMultiple = true, Inherited = true)]
public class RequiredIfAttribute : ValidationAttribute,IClientValidatable
{
    public RequiredIfAttribute(string dependentProperties, 
     string dependentValues = "",
     string requiredValue = "val")
     {
     }
}
Run Code Online (Sandbox Code Playgroud)

在dependentProperties中,我可以指定由逗号分隔的多个依赖属性,在dependentValues中,我可以指定依赖属性验证应该处理哪些值,最后在requiredValue中,我可以指定要验证的字段的期望值.

在我的模型中有两个属性LandMark,PinCode和我想使用验证如下:

public string LandMark { get; set; }
[RequiredIf("LandMark","XYZ","500500")]
[RequiredIf("LandMark", "ABC", "500505")]
public string PinCode { get; set; }
Run Code Online (Sandbox Code Playgroud)

这里的值只是例如,因为似乎我可以多次添加属性并且不会出现任何编译错误,我已经在属性中实现了TypeID,如果我从中删除客户端验证,它在服务器端运行良好.但是当我在属性上实现IClientValidatable时,它给了我一个错误:

"不引人注目的客户端验证规则中的验证类型名称必须是唯一的."

任何帮助我该如何解决?

c# jquery-validate data-annotations asp.net-mvc-3

5
推荐指数
2
解决办法
1万
查看次数