Vous pouvez simplement ajouter un paramètre booléen à votre action:
public ActionResult LogIn(string username, string password, bool remember)
{
// You have it
}
De plus, vous pouvez utiliser RouteValues [ "Souviens-toi"] pour obtenir le ValueProviderResult.
Vous vous pouvez faire:
public ActionResult LogIn(string username, string password)
{
bool remember = false;
ValueProviderResult val;
if (RouteValues.TryGetValue(key, out val))
remember = (bool)val.ConvertTo(typeof(bool));
// Now you have it
}
Mais je préfère la 1ère option pour des raisons évidentes.
Quant à la question:
Est-ce normal? pourquoi est-ce vrai, faux? qu'est-ce que c'est maintenant vrai ou faux?
Oui c'est normal. L'aide checkbox dans MVC génère toujours une entrée cachée avec la valeur "False". Ceci est nécessaire pour fournir une valeur False si la case n'est pas cochée.
Pourquoi?
En raison de selon W3.ORG la valeur n'est publiée sur le serveur que si la case est cochée, sinon ce n'est pas le cas (donc vous ne savez pas si c'est Vrai ou Faux, par exemple est nul). Par conséquent, si vous cochez la case "true, false", le serveur se verra attribuer la valeur true.
Si la case à cocher n'est PAS sélectionnée, le mot "faux" est envoyé au serveur et vous pouvez être sûr qu'il n'est PAS sélectionné.
Pour clarifier davantage: les valeurs (selon W3.ORG) du même nom sont séparées par des virgules. Il est donc parfaitement possible d'avoir différentes entrées avec le même nom sous forme unique (même si les entrées sont de différents types: case à cocher, radio, texte, caché, etc.).
En avez-vous deux sur la page? –
Non, c'est la première chose que j'ai cherché. Je n'en ai pas. J'ai remarqué à travers firebug mais j'ai ceci. Je ne sais pas si c'est normal ou non. – chobo2
Ah. Eh bien, je ne sais rien à propos de MVC spécifiquement, alors peut-être que c'est bon. Je pense que la réponse des autres affiches est plus utile, alors je vous laisse ça. D'un point de vue purement «demande», cela explique les deux valeurs. –