Проверка сложной модели ASP.NET MVC - PullRequest
0 голосов
/ 27 октября 2010

У меня есть сложная модель

public class ComplexModel
{

    public UserModel userModel;

    public ExtraInfoModel extraModel;
}

, где

UserModel может иметь обязательные поля

как в:

public class UserModel
{

     [Required]
     public string email;
}

как мнепроверить ComplexModel, чтобы убедиться, что аннотации данных на его моделях-членах учитываются при проверке ComplexModel?

Спасибо.

ОБНОВЛЕНИЕ:

Вот мой точный сценарий,Когда я вызываю ModelState.IsValid в действии контроллера для ManageProfileModel, независимо от того, было ли установлено «SelectedValue» элемента ListModelRequired элемента GeneralInfoModel или нет, допустимо состояние модели.

public class ManageProfileModel
{
    [Required(ErrorMessage="Experience is required")]
    public int LevelOfExperienceTypeID { get; set; }
    public GeneralInfoModel GeneralInfoModel { get; set; }
}

public class GeneralInfoModel
{
    [Required]
    [DisplayName("Profile Headline")]
    public string ProfileName { get; set; }

    [DisplayName("Signature")]
    public string Signature { get; set; }

    [Required]
    public ListModelRequired LevelOfExperience { get; set; }
}

public class ListModel
{
    public ListModel()
    {
    }

    public ListModel(string name)
    {
        this.Name = name;
    }

    public ListModel(string name, string selectedValue):this(name)
    {
        this.SelectedValue = selectedValue;
    }

    public ListModel(string name, IEnumerable<SelectListItem> members):this(name)
    {
        this.Members = members;
    }

    public ListModel(string name, IEnumerable<SelectListItem> members, string selectedValue)
        : this(name, members)
    {
        this.SelectedValue = selectedValue;
    }

    public IEnumerable<SelectListItem> Members { get; set; }

    public string Name { get; set; }

    public virtual string SelectedValue { get; set; }

    public string Label { get; set; }
}

public class ListModelRequired : ListModel
{
    [Required]
    public override string SelectedValue { get; set; }

    public ListModelRequired():base()
    {
    }

    public ListModelRequired(string name):base(name)
    {
    }

    public ListModelRequired(string name, string selectedValue):base(name,selectedValue)
    {
    }

    public ListModelRequired(string name, IEnumerable<SelectListItem> members)
        : base(name, members)
    {
    }

    public ListModelRequired(string name, IEnumerable<SelectListItem> members, string selectedValue)
        : base(name, members,selectedValue)
    {
    }
}

1 Ответ

0 голосов
/ 27 октября 2010

Я думаю, что связыватель модели по умолчанию получает это право, проверяя подмодели, которые используют аннотации данных. Какая проблема у тебя на самом деле с этим? Например, у меня есть что-то похожее на:

public class OnlineDonationModel
{
     [Required]
     public decimal? Amount { get; set; }

     public ContactModel Contact { get; set; }
}

public class ContactModel
{
     [Required]
     public string FirstName { get; set; }

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

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

     ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...