9
votes

DropdownListFor (...) Sélection de Faux Boolean Par défaut

J'ai typique YesNo type de liste déroulante dans l'application. Pour cela, j'ai développé une classe de modèle (plutôt de l'utilitaire plutôt viewmodel) pour la future extension de prouvose.

@Html.DropDownListFor(x => x.SelectedValue, new SelectList(Model.DropDowns, "Value", "Text",1),"Select") //last para - OptionLabel


0 commentaires

4 Réponses :


11
votes

modèle: xxx pré>

vue: p> xxx pré>

Ceci fait une liste déroulante automatiquement avec 3 états qui correspondent aux 3 états d'un NULLABLE BOOL: NULL, VRAI, FAUX. Si vous souhaitez que la valeur soit répondue, vous pouvez utiliser des annotations de données, comme: P>

Modèle: p>

[Required]
public bool? Value { get; set; }


8 commentaires

Merci pour la réponse. Mais, je suppose que ma question était mal comprise. Actuellement, avec la valeur BOOL par défaut "Non" est sélectionné. Au lieu de cela, je veux "SELECT" que l'optionLabel doit être sélectionnée.


Je laisserai quelqu'un d'autre répondre à celui-là - vous devez fournir le modèle dropdown pour eux.


N'ayez pas assez de réputation pour poster le code ... :( Je suppose que le problème est avec le type d'expression de Lambda. Dans le code ci-dessus, x => x.selectedvalue est le type de BOOL. Ce moteur force pour sélectionner "faux" Valeur dans la collection fournie. Je n'en suis pas sûr!


C'est mes connaissances inadéquates sur DropdownlistFor (...) gaspillée votre temps. x => x.SelectedValue qui n'est pas défini et sa valeur par défaut est false. Par conséquent, de la liste, il choisira une fausse valeur. Votre solution nullable va être pratique ici. Merci pour votre temps.


Cela ne fonctionne pas pour nous. L'option "non définie" par défaut sans valeur ne passe pas la validation.


@Alexandre Je suggérerais de poster une nouvelle question afin qu'elle soit examinée par plus de personnes. Vous devriez avoir une réponse de cette façon.


Je voulais juste souligner que, en ce qui me concerne, l'exemple que vous avez donné générera une liste déroulante qui ne passera pas de validation si rien n'est sélectionné (NULL). C'est ce qui se passe dans mon cas quand même. Peut-être à cause d'un troisième facteur (n'a pas le temps de valider davantage) mais je pensais qu'il serait utile de l'ajouter comme un commentaire si quelqu'un d'autre a le même problème lors de la mise en œuvre de votre solution.


@Alexandre Ah, super tard, mais oui, c'était une sorte de tout point - si vous souhaitez avoir besoin de la valeur, laissez-le être initialement nul mais que vous en avez besoin, puis ils doivent répondre. Si vous autorisez NULL, alors pas besoin de [requis] . Cela permet donc à NULL comme une valeur initiale mais nécessite une réponse.



1
votes

Je sais que c'est un vieil sujet, mais je pensais que pour d'autres personnes, cela pourrait être utile pour connaître un petit fond.

non est sélectionné par défaut car la valeur par défaut d'un BOOL est fausse < p> Si vous venez de définir le modèle pour être un Null-capable bool comme celui-ci dans votre modèle de vue, alors il devrait par défaut, sélectionnez votre valeur par défaut. : xxx

et ensuite vous vient de définir votre liste déroulante comme celle-ci dans la vue: xxx

Le résultat devrait être Que lorsque le bool est null, l'option sélectionnée automatiquement doit être votre valeur par défaut {valeur de sélection par défaut}


0 commentaires

5
votes

Dans mon cas, j'avais un tas de ces dépositions sur la même page et je pensais que je serais intelligent et réutiliser la liste de sélection, par exemple

<%: Html.DropDownListFor(x => x.Field1, Model.YesOrNoTriState) %>
<%: Html.DropDownListFor(x => x.Field2, Model.YesOrNoTriState) %>


0 commentaires

12
votes

viewModel xxx

vue xxx


3 commentaires

Cela ne fonctionne pas si vous avez la [requis] annotation de données sur le modèle.


La validation correcte de JavaScript devrait être utilisée.


A fonctionné à merveille pour moi! Je viens de laisser le troisième paramètre "Sélectionnez ....." car je traitais avec un champ requis afin qu'il soit toujours peuplé.