Obtenir des valeurs de chaîne de requête lors de la soumission d'un formulaire...MVC3
Dans mon MVC3 app, si je fais une valeur de chaîne de requête dans l'url et appuyez sur entrée, je peux obtenir la valeur que j'ai tapé:
localhost:34556/?db=test
Mon action par défaut qui sera le feu:
public ActionResult Index(string db)
La variable db a "test".
Maintenant, j'ai besoin d'envoyer un formulaire et de lire la valeur de chaîne de requête, mais quand je soumettre le formulaire via jQuery:
$('#btnLogOn').click(function(e) {
e.preventDefault();
document.forms[0].submit();
});
Et celle-ci est la forme je suis d'envoi:
@using (Html.BeginForm("LogIn", "Home", new { id="form1" }, FormMethod.Post))
Heres l'action:
[HttpPost]
public ActionResult LogIn(LogOnModel logOnModel, string db)
{
string dbName= Request.QueryString["db"];
}
La variable dbName est nulle car la Demande.QueryString["db"] est null, alors la variable est db qui est passée et je ne sais pas pourquoi. Quelqu'un peut-il m'aider à obtenir une variable de chaîne de requête une fois qu'un formulaire est soumis? Grâce
Chaîne de requête ne sera pas visible dans un post de formulaire: stackoverflow.com/questions/1116019/...
Merci pour la réponse, alors, quel est mon alternative? Je dois garder la chaîne de requête btw
L'alternative est d'utiliser la chaîne de requête dans le OBTENIR pour remplir un caché d'entrée dans un formulaire. Alors le caché entrée post avec un submit.
Merci pour la réponse, alors, quel est mon alternative? Je dois garder la chaîne de requête btw
L'alternative est d'utiliser la chaîne de requête dans le OBTENIR pour remplir un caché d'entrée dans un formulaire. Alors le caché entrée post avec un submit.
OriginalL'auteur BoundForGlory | 2012-07-09
Vous devez vous connecter pour publier un commentaire.
Vous pourriez avoir quelque chose comme
Contrôleurs:
ViewModel:
Edit: Fixée pour votre condition.
L'erreur, au point de cette méthode est que vous n'avez pas la valeur dans la chaîne de requête, il vous suffit d'attribuer à votre viewmodel à l'intérieur de la forme. Quelque chose comme @Html.Textboxfor(modèle => le modèle.dbName, etc.). Si vous voulez vraiment vous mettre dans l'URL (les fins de SEO?) Je pense que vous pouvez ajouter un paramètre dans le @à l'aide de Html (.BeginForm("LoginForm", "Maison", new {.id = "form1", .dbName = YourFormFieldValueHere}, FormMethod.Post))
Euh, ma question est comment puis-je obtenir la valeur de chaîne de requête? Pas celle de tous les autres moyens. Si je pouvais aller dans une autre voie, je le ferais. Mais les règles de dire que nous utilisons la chaîne de requête et je n'ai pas la société. Merci quand même
Essayez mon montage. Les commentaires sous l'HTTPPost partie devrait vous permettre d'accéder à la dbName partie de l'URL. Vous n'avez pas besoin de faire une Demande. Suffit de définir quelle que soit la var vous voulez l'égalité de dbName.
OriginalL'auteur Saedeas
Depuis que vous êtes à l'aide d'afficher les données que vous cherchez est dans
Request.Form
au lieu deRequest.QueryString
.OriginalL'auteur ThiefMaster
@ThiefMaster♦ le disais dans un POST, vous ne peut pas avoir de la chaîne de requête, jamais le moins, si vous n'avez pas wan pas sérialiser vos données à un objet spécifique, vous pouvez utiliser le
FormCollection Object
qui vous permet d'obtenir tous les éléments du formulaire de passer par la poste pour le serveurPar exemple
Il Contient tous les éléments que vous aviez passé en la forme, si vos informations de connexion à l'intérieur de la forme, il va être sur le formCollection
OriginalL'auteur Jorge