2012-05-09 1 views
0

Je simple ViewModelasp.net mvc3, pourquoi dataannotation valide sans attributs Validator?

public class ProductViewModel 
{ 
    [Required(ErrorMessage = "This title field is required")] 
    public string Title { get; set; } 
    public double Price { get; set; } 
} 

voici mon formulaire basé sur cette vue Modèle.

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>ProductViewModel</legend> 

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

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

    <p> 
     <input type="submit" value="Create" /> 
    </p> 
</fieldset> 

}

Je ne veux pas valider le champ de prix. mais il est automatiquement validé, si rien n'est entré, montrera que ce champ est obligatoire. Je remarque que j'utilise le double pour le prix. Si je l'ai changé en "chaîne". la validation est supprimée. pourquoi taper "double" cause une validation automatique?

Répondre

1

Je ne veux pas valider le champ de prix. mais il est automatiquement validé, si rien n'est entré, affichera ce champ obligatoire

Parce qu'un double est un type de valeur, qui ne peut pas être nul. Si vous voulez la valeur pour permettre de ne pas avoir une valeur, utilisez un nullable double: double? sur votre modèle:

public class ProductViewModel 
{ 
    [Required(ErrorMessage = "This title field is required")] 
    public string Title { get; set; } 
    public double? Price { get; set; } 
} 
+0

bonne réponse, merci beaucoup. – qinking126

1

Puisqu'une double est un type de valeur, et ne peut pas être nulle. Vous auriez pu le faire double? ou Nullable<double> et ce serait bien.

+0

bonne réponse, merci beaucoup. – qinking126

Questions connexes