SORU
10 Mart 2010, ÇARŞAMBA


Koşullu doğrulama ASP.NET MVC

Nasıl veri modeli ek açıklamalar koşullu bir doğrulama yapmak için kullanılır?

Örneğin, lets aşağıdaki model (Kişinin) üst Düzey var ki:

public class Person
{
    [Required(ErrorMessage = "*")]
    public string Name
    {
        get;
        set;
    }

    public bool IsSenior
    {
        get;
        set;
    }

    public Senior Senior
    {
        get;
        set;
    }
}

public class Senior
{
    [Required(ErrorMessage = "*")]//this should be conditional validation, based on the "IsSenior" value
    public string Description
    {
        get;
        set;
    }
}

Ve aşağıdaki görünümü:

<%= Html.EditorFor(m => m.Name)%>
<%= Html.ValidationMessageFor(m => m.Name)%>

<%= Html.CheckBoxFor(m => m.IsSenior)%>
<%= Html.ValidationMessageFor(m => m.IsSenior)%>

<%= Html.CheckBoxFor(m => m.Senior.Description)%>
<%= Html.ValidationMessageFor(m => m.Senior.Description)%>

"Kıdemli.olmak istiyorum"Seçime bağlı özellik koşullu zorunlu alan "" satılık arsa (true ->İsSenior açıklama gerekli). Nasıl ASP.NET MVC koşullu Veri Doğrulama uygulamak ek açıklamalar ile 2?


GÜNCELLEME

Güzel bir çözüm buldum. Aşağıda bak.

CEVAP
12 Mart 2011, CUMARTESİ


MVC3 şartlı geçerlilik kuralları eklemek için daha iyi bir yolu var. Modeliniz İValidatableObject miras ve Doğrulama yöntemi uygulayın:

public class Person : IValidatableObject
{
    public string Name { get; set; }
    public bool IsSenior { get; set; }
    public Senior Senior { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
        if (IsSenior && string.IsNullOrEmpty(Senior.Description)) 
            yield return new ValidationResult("Description must be supplied.");
    }
}

http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx bir açıklama yapın

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edgar flores

    Edgar flores

    7 HAZİRAN 2006
  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • infodirt

    infodirt

    11 Mart 2009