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

  • DrakeVEVO

    DrakeVEVO

    17 AĞUSTOS 2009
  • emimusic

    emimusic

    10 Mart 2006
  • TantalizingTrance

    TantalizingT

    15 ŞUBAT 2009