2016-04-01 22 views
2

ASP.Net MVC6'daki bir modeldeki bazı özellikler için model doğrulamasını kaldırmanın bir yolu var mı? ASP.NET MVC'deki ModelState hatalarını kaldır

kullanıyorum önerir bu yazı Is there a strongly-named way to remove ModelState errors in ASP.NET MVC

, ModelBindingHelper.ClearValidationStateForModel (Tip, ModelStateDictionary, IModelMetadataProvider, string) rastladı.

Ancak bu konuda daha fazla yardım bulamıyorum.

Lütfen herhangi bir model özelliğini ClearValidationStateForModel kullanarak kaldırmaya yönelik örnek bir çalışma önerebilir misiniz?

+0

Ne yapmaya çalışıyorsunuz? Birkaç özellik için model doğrulama hatası kaldırmak istiyor musunuz? – Shyju

cevap

2

Bu, CreatePost görünüm modelinizin Title özelliği için doğrulama hataları kaldırmalıdır. Ayrıca, ModelState.ClearValidationState da, ModelState.ClearValidationState da çalışacaktır.

ModelState.ClearValidationState("Title"); 

DÜZENLEME: comment gereğince, OP başka özellik değerine dayanarak doğrulanması için belirli özellik dışlamak istiyor. Bu iyi çalışmalı.

[HttpPost] 
public ActionResult Create(CreatePost model) //CreatePost model 
{ 
    if (model.Type == 1) 
    { 
     ModelBindingHelper.ClearValidationStateForModel(model.GetType(), 
                ModelState, MetadataProvider, "Title"); 
    } 
    if (ModelState.IsValid) 
    { 
     // to do : Do useful stuff and return something 
    } 
    return View(model); 
} 
+0

Bunların her ikisi de ASP.Net MVC çalışmak için görünmüyor 6. Aşağıda bunu kullanıyorum nasıl: [HttpPost] public ActionResult oluşturun (CreatePost modeli) { // Ben atlamak istiyor Title için doğrulama, bu yüzden ModelState.IsValid ModelBindingHelper.ClearValidationStateForModel (model.GetType(), ModelState, MetadataProvider, "Title") denetlemeden önce ekledim; if (ModelState.IsValid) { // için yapın: Kaydet ve bir şey dönmek } dönüş Görüntüle (model); } –

+0

Ne demek MVC6 üzerinde çalışmıyor? Bunu bir MVC 6 projesinde doğruladım ve gayet iyi çalışıyor (hem dnx 451 hem de dnxcore50). Özellikle sizin için çalışmayan nedir? – Shyju

+0

Bir modelde farklı özelliklere sahibim. Bunlardan biri Tür ve Diğer Süre Süresidir, seçili tür 1 ise Süre geçerliliğini atlamak istiyorum, oysa diğer tüm türler için geçerliliği çalıştırmak istiyorum. MVC5 ModelState.Remove ("Süre"); ModelState.IsValid'i kontrol etmeden önce, bunun MVC 6'da çalıştığı görülmüyor. Ayrıca önerilen çözümünüzü denedim: ModelState.ClearValidationState ("Duration"); ModelState.IsValid denetlemeden önce, ancak ModelState.IsValid çalıştığı gibi başarısız olarak döndürülür. Modelin tüm diğer özelliklerinin geçerli veriyi doğruladım. –