验证父对象时是否可以自动验证复杂的子对象,并将结果包含在已填充的对象中ICollection<ValidationResult>?
如果我运行以下代码:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
namespace ConsoleApplication1
{
public class Person
{
[Required]
public string Name { get; set; }
public Address Address { get; set; }
}
public class Address
{
[Required]
public string Street { get; set; }
[Required]
public string City { get; set; }
[Required]
public string State { get; set; }
}
class Program
{
static void Main(string[] args)
{
Person person = new Person
{
Name = null,
Address …Run Code Online (Sandbox Code Playgroud) 我正在开发用于在 Visual Studio 2015 中进行验证的 ASP.NET MVC 5.2.3 自定义数据注释。它需要采用任意数量的字段并确保如果有一个值,它们都必须有一个值;如果它们都是空/空白,应该没问题。
一些例子有帮助:
但是,我不确定如何进行客户端验证,其中要验证的字段数量未知。
您如何使用接口GetClientValidationRules()方法的实现将其传递给客户端IClientValidatable?
另外,如何将这个新的数据注释应用到我的视图模型上的属性?会是这个样子吗?
[MultipleRequired("AppNumber", "UserId", /* more fields */), ErrorMessage = "Something..."]
[DisplayName("App #")]
public int AppNumber { get; set; }
[DisplayName("User ID")]
public int UserId { get; set; }
Run Code Online (Sandbox Code Playgroud)
这是我使用MultipleRequiredAttribute自定义数据注释类所能得到的:
public class MultipleRequiredAttribute : ValidationAttribute, IClientValidatable
{
private readonly string[] _fields;
public MultipleRequiredAttribute(params string[] fields)
{
_fields = fields;
}
protected override ValidationResult IsValid(object value, …Run Code Online (Sandbox Code Playgroud) 我在我的MVC应用程序中使用Simon Ince创建的自定义RequiredIf属性.
我有一个viewmodel,它传递给视图,如下所示:
public class HistoryViewModel
{
public Contact ContactModel { get; set; }
public Account AccountModel { get; set; }
public Person PersonModel { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一堆带有所有道具的模型(即contact.cs,account.cs,person.cs)
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public bool IsAdult { get; set; }
[RequiredIf("IsAdult", "Yes", Errormessage="Please leave a comment")]
public string Comments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
RequiredIf通过viewmodel传递时,验证似乎不起作用.如果我将属性直接移动到viewmodel中,它可以正常. All other工作[必需]`属性通过视图模型从模型中工作.
那么我需要将所有属性移动到viewmodel中,它们需要RequiredIf吗?或者还有另一种方法吗?