2011-10-18 14 views
5

Chcę wyczyścić przesłaną wartość pola w modelu, jeśli ModelState pokazuje, że pole jest nieprawidłowe.Wyczyść wartość pola, jeśli ModelState mówi, że pole jest nieprawidłowe

To tutaj dotarłem do tej pory, ale nie mogę powiązać klucza do wartości w modelu. Jakieś sugestie?

if (!ModelState.IsValid) 
{ 
    foreach (string key in ModelState.Keys) 
    { 
    if (!ModelState.IsValidField(key)) 
    { 
     // This field is not valid so set to empty string in model 
     // Something like.... 
     model[key] = ""; 
    } 
    } 
} 

Odpowiedz

11

Należy zwrócić ten sam widok z otrzymanym modelu, a także zmienić swój kod do następujących:

if (!this.ModelState.IsValidField(key)) 
{ 
    var emptyValue = new ValueProviderResult(
     string.Empty, 
     string.Empty, 
     CultureInfo.CurrentCulture); 

    this.ModelState.SetModelValue(
     key, 
     emptyValue); 
} 
+0

wiem, jest to stara sprawa. Ale jako rozszerzenie tego pytania -> Jak uzyskać dostęp do modelu z zaktualizowanymi wartościami, jeśli nie chcę, aby mój model zawierał nieprawidłowe wartości. – user979737