0
votes

Pourquoi la validation pour décimale ne fonctionne-t-elle pas pour les pages ASP.NET CORE 3.1 RAZOR?

Pourquoi la validation pour décimale ne fonctionne pas pour ASP.NET CORE 3.1 Pages de rasoir?

Travail côté client, mais après les données postales, je reçois ce message de validation côté serveur (modelstate.isvalid = false dans mon cas). La valeur '1.000000' n'est pas valide pour ... p>

Entrez la description de l'image ici p>

Propriété du modèle: P>

<input class="form-control" asp-for="@Model.ValueFactor" />
<span asp-validation-for="ValueFactor" class="text-danger"></span>


9 commentaires

Si je suis compris correctement, vous demandez une zone de texte n'accepte pas les décimales?


@ ceci.girish s'il s'agit de la zone de texte, cela acceptera tout.


@Sargis, veuillez vérifier le type de la commande d'entrée HTML générée.


@ this.girish Oui, après la publication de données, je reçois ce message de validation côté serveur, fonctionne le côté client.


@Tanvirarjel Type d'entrée est du texte, je reçois cela du côté serveur, modelstate.isvalid = false dans mon cas.


Êtes-vous par hasard non américain? Ceci est typique des problèmes liés à la langue et à une disparité entre les paramètres régionaux que l'application est exécutée et ce que le navigateur ou vous attendez. C'est à dire. Si le service est en allemand, sauf si vous forcez les paramètres régionaux anglais pour le test, vous risquez de vous retrouver avec Decimal en attendant un "," et non un ".". Le navigateur peut être réglé pour attendre une languue spécifique et vous pouvez avoir un problème de code ici.


@Tomtom Il peut être, grâce au navigateur Afficher les données avec cette "", ", que puis-je faire pour résoudre ce problème?


Je ne pouvais pas reproduire votre problème.Je pourrait valider avec succès sur le côté du serveur. Conservez-vous votre modèle entier et votre point de vue.Aussi pourriez-vous partager votre méthode postale?


Merci à tout le monde, j'ai trouvé une solution, la chose est dans les contextes régionaux de mon ordinateur, où le symbole décimal est une virgule.


3 Réponses :


0
votes

colonne fort> est Code Première annotation de données strong>

Pour validation de la décimale Vous avez besoin d'une combinaison de validations de regex et de plage comme ci-dessous: p>

[RegularExpression(@"^\d+\.\d{6}$")]
[Range(0, 9999999999.999999)]


2 commentaires

Avez-vous eu la même erreur 'La valeur n'est pas valide pour ValueFactor'?


Je comprends exactement la même erreur, je ne peux pas comprendre pourquoi Model.State pense que le numéro avec DOT (1.20 ou 1.000000) n'est pas valide pour le type décimal.



0
votes

Essayez quelque chose comme celui-ci sur le côté serveur.

public class PersonModel
{
    [Required(ErrorMessage = "Required Decimal Number")]
    [RegularExpression(@"^[0-9]+(\.[0-9]{1,100})$", ErrorMessage = "Valid Decimal number with maximum  decimal places.")]
    public string Expenses { get; set; }
}


0 commentaires

0
votes

 La chose est dans les réglages régionaux de mon ordinateur, où le symbole décimal est une virgule.

J'ai trouvé une solution, la chose est dans les réglages régionaux de mon ordinateur, où le symbole décimal est une virgule. Le côté serveur veut un point pour le séparateur décimal, mais mon côté client veut une virgule comme vous pouvez le voir sur la photo, c'est pourquoi il y a une incohérence, pour la résolution de cela, vous devez simplement modifier le type de symbole décimal comme indiqué sur la photo.


1 commentaires

C'est une solution de travail, pas une solution appropriée. Changer le symbole décimal pour le système d'exploitation réel pourrait casser un autre programme.