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

  • Need for Speed

    Need for Spe

    8 ŞUBAT 2006
  • Rachel Raum

    Rachel Raum

    10 EYLÜL 2007
  • William Hyde

    William Hyde

    23 HAZİRAN 2008