2010-12-21 1 views
0

Wie passt man die Validierung von Datenanmerkungsdaten für dieses Szenario an?MVC-Datenannotation zum Validieren des Datentyps

Ich erhalte diese Fehlermeldung:

The value 'Select Province' is not valid for Province.

Ich möchte es wie dieses

Please select a country

Mein Ansichtsmodell sieht wie folgt aus:

[DisplayName("Province")] 
    [UIHint("ProvinceDropDown")] 
    public long? ProvinceId { get; set; } 

Meine Ansicht ist eine Auswahlliste:

<select name="ProvinceId" id="ProvinceId" class="input-validation-error"> 
    <option value="">Select Province</option> 
    <option value="613">Allen </option> 
    <option value="614">Anderson</option> 
    // data truncated .... 
</select> 
+0

Ich habe 'UIHintAttribute' noch nie zuvor gesehen - was macht es? :) –

Antwort

2

Sie müssen ErrorMessage = "Please Select a Country" zu Annotations Attribut hinzufügen, ähnlich wie the example here:

[Range(0, 50, ErrorMessage = "Quantity on order must be between 0 and 50.")] 
public int OnOrder { get; set; } 
+0

auf welches Attribut werde ich ErrorMessage hinzufügen. AFAIK kann nur an Validierungsattributen angehängt werden. Aber ich habe keine. Es wird ein Fehler ausgelöst, weil "Provinz auswählen" keinen Wert hat. –

+0

@geocine: Um die Validatoren zu erhalten, fügen Sie "using System.ComponentModel.DataAnnotations;" und System.ComponentModel.DataAnnotations.dll als Referenz. – CRice

+0

@CRice Sie haben mich hier falsch verstanden, ich weiß, wie die Validatoren hinzugefügt werden. Probier meinen Testfall. Ich habe kein Validierungsattribut für die ProvinzID-Eigenschaft, daher kann ich keine Fehlermeldung anhängen. Mit Roberts Beispiel könnten Sie eine Fehlermeldung setzen, weil Sie ein Bereichsvalidierungsattribut haben. Die Fehlermeldung wird jedes Mal angezeigt, wenn eine Regelverletzung für den Bereich verletzt wird. Ich habe keine Regeln, aber ein Standardfehler des ungültigen Typs erscheint. –

0

die Validierer So passen Sie von Validation erben können:

public class SomeAttribute : System.ComponentModel.DataAnnotations.ValidationAttribute 
{ 
    public override bool IsValid(object value) 
    { 
    } 
} 

ich glaube, Sie werden dies nicht tun müssen Stattdessen sollten Sie versuchen, Ihre NULL-Werte als Zeichenfolge zu definieren und die Validatoren für diese Eigenschaft zu verwenden.

Dann konvertieren Sie Ihr Ansichtsmodell in ein Domänenmodell, das nach der Gültigkeitsprüfung die Nullzahl hat.