2011-12-21 39 views
6

ASP.Net MVC 3 kullanıyorum. Kimlik, Ad, Yaş, RollNo özellikleri olan Öğrenci adında bir varlık var. Öğrenci oluşturma sayfasında doğrulama çerçevesini kullandım. Ancak Gelişmiş Arama sayfasında, tüm özellikleri kullanıyorum ancak kullanıcılar arama için tüm alanları kullanmak istemeyebileceğinden doğrulama çerçevesini kullanmak istemiyorum.@ Html.TextBoxFor içinde doğrulamayı devre dışı bırakma .Net

Model sınıfında [Zorunlu] ek açıklama kullandığımı belirtmek isterim.

Lütfen bu sorunun üstesinden gelmeme yardımcı olun.

Selamlar Molay

+0

kullanımını 'Html.TextBox' yerine? TextBoxFor'un getirdiği diğer iyiliği kaybedersiniz, ancak kodlamak çok zor değildir. – tugberk

+0

Bunu düşündüğünüzde, bu arama sayfası veya başka bir özel sayfa için ViewModel'i düşünmeniz gerekir. Tüm ViewModels sonra her zaman en iyi uygulamadır. –

cevap

15

soruna cevap için birkaç seçenek istemci tarafı var ama arama için ayrı bir Görünüm modeli kullanmak, xixonia kabul edeceğini: HTML niteliği olarak data-val = "false" yılında

  1. Geçir örn: @Html.TextBoxFor(x => x.Age, new { data_val = "false" });
  2. @Html.TextBox() kullanın yerine
  3. modele

ben bağlanır, böylece el ile aynı giriş adını kullanarak HTML ile metin kutusu oluşturmak f arka uçta doğrulama yapıyorsunuz (siz olmalısınız!), yani ModelState.IsValid'u kontrol ediyorsanız o zaman ModelState'den doğrulama özelliklerini kaldırmanız gerekecek: ModelState.Remove("Age");.

+0

Bunu yapmayı düşünmedim! :) –

+0

Çok teşekkürler! İşe yarıyor. – Molay

2

Sen çalışma anında özelliğini kaldıramazsınız. Oluşturma için bir ve diğer arama için bir tane öğrenci varlığı için birden fazla görüntüleme modeline sahip olmanız gerekir.

+0

Bu SO sorusuna bakın http://stackoverflow.com/q/5367287/293712 – Maheep

2

Öğrenci sınıfının değerleri kısıtlı (olması gerektiği gibi) gibi geliyor.

Bir Öğrenci kullanmak yerine, arama için ayrı bir görünüm modeli kullanmayı düşünürüm.

public class Student 
{ 
    [ValidationAttributeOfSomeKind] 
    int Age { get; set; } 

    [ValidationAttributeOfSomeKind] 
    string Name { get; set; } 
} 

public class StudentSearch 
{ 
    int? Age { get; set; } 

    string Name { get; set; } 
} 
1

Kendi metin kutusu yardımcınızı yazmanız gerektiğini düşünüyorum. Bunu devre dışı bırakmanın bir yolu yok.

1

formunuzda bu kodu ekleyin:

@Html.EnableClientValidation(false); 
+0

Bu iş mükemmel! Teşekkürler. – Jirapong

İlgili konular