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

  • jat4011

    jat4011

    16 EKİM 2010
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006
  • THE RED DRAGON

    THE RED DRAG

    6 ŞUBAT 2009