2012-01-17 29 views
5

Benim viewmodel benim bir takım katılma hakkında bilgi toplayacak bir form için ayarlamaya çalışıyorum. Formda, bazı ilk bilgileri içeren ve ardından her biri bir ad, e-posta ve telefon içeren 5 "Ekip Üyesi" listesi bulunmalıdır. Benim doğrulama için böyle bireysel alanlarda olmasını istiyorum:İsteğe bağlı [Zorunlu] karmaşık türlerde

Person 1: 
Name: (validation messaage) 
Email: (validation message) 
Phone: (validation message) 

Person 2: 
Name: (validation messaage) 
Email: (validation message) 
Phone: (validation message) 

Person 3: 
Name: 
Email: 
Phone: 

Person 4: 
Name: 
Email: 
Phone: 

Person 5: 
Name: 
Email: 
Phone: 

benim ViewModel ilgili kısmı şu anda: Bence bu yüzden

[Required] 
public TeamMember TeamMember1 { get; set; } 

[Required] 
public TeamMember TeamMember2 { get; set; } 

public TeamMember TeamMember3 { get; set; } 

public TeamMember TeamMember4 { get; set; } 

public TeamMember TeamMember5 { get; set; } 

, sadece yazın:

@Html.EditorFor(model=>model.TeamMember1) 

@Html.EditorFor(model=>model.TeamMember2) 

@Html.EditorFor(model=>model.TeamMember3) 

@Html.EditorFor(model=>model.TeamMember4) 

@Html.EditorFor(model=>model.TeamMember5) 

editör şablon şuna benzer:

@model MyProject.Models.TeamMember 

<div class="editor-label"> 
    @Html.LabelFor(model => model.Name) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Name) 
    @Html.ValidationMessageFor(model => model.Name) 
</div> 

<div class="editor-label"> 
    @Html.LabelFor(model => model.Email) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Email) 
    @Html.ValidationMessageFor(model => model.Email) 
</div> 

<div class="editor-label"> 
    @Html.LabelFor(model => model.Phone) 
</div> 
<div class="editor-field"> 
    @Html.EditorFor(model => model.Phone) 
    @Html.ValidationMessageFor(model => model.Phone) 
</div> 

Bir iş parçacığına bu kadar çok şey attığım için üzgünüm, ancak bunun en iyi şekilde nasıl ayarlanacağı konusunda bir öneri var mı? RequiredAttribute öğesinden devralmayı ve TeamMember özelliklerinde [Zorunlu] 'u değiştirmeyi düşündüm, ancak doğrulama alanlarını çocuk alanlarına nasıl ayarlayacağımı bilmiyorum. Şu anda, boş olsa bile, gerekli denetimden geçiyor, farz ediyorum çünkü tüm özellikler boş olsa bile nesneler bağlı (ve böylece boş değil).

Herhangi bir geri bildiriminiz için teşekkür ederiz.

cevap

1

Özel bir doğrulayıcı yazabilirsiniz. Aşağıda, diğer özelliklerin değerlerine nasıl erişebileceğinize bir örnek verilmiştir. Daha sonra, TeamMember'i veya özelliği, doğrulama mantığına bağlı olarak bu özel doğrulama özniteliği ile dekore edebilirsiniz. Ben bunu

sınıf seviyesinde tavsiye ederim.