Vous voulez essentiellement que j'essaye de faire est d'authentifier un utilisateur en les ayant entré dans leur compte et leur numéro de sécurité sociale. S'ils entrent une combinaison incorrecte, je passe les éléments suivants sur le ceci affiche l'erreur, mais je perds ce qui était dans ma chaîne de requête . Une alternative à la limite de la chaîne de requête est la suivante: p> Ceci conservera la chaîne de requête, mais l'erreur ne s'affiche pas. Je suppose que c'est parce que le J'ai besoin du existe une façon de réaliser à la fois la préservation de la chaîne de requête et d'afficher l'erreur de modèle? p> p> authentifier code> Post Action:
modélistate code> a changé. P>
retournerl code> car l'utilisateur est forcé au
authentifier code> page Chaque fois qu'ils cliquent pour afficher un événement spécifique. Je veux le configurer afin qu'ils vont toujours à cet événement une fois qu'ils se sont authentifiés. p>
3 Réponses :
Votre deuxième scénario n'a pas l'état modèle car lorsque vous faites une redirection, le navigateur fait une demande distincte à cet emplacement, des demandes séparées = nouvel état modèle.
Je suggérerais d'utiliser votre premier scénario et de placer un " Return "dans votre modèle et le rend sur le client comme champ caché. p>
Ou simplement passer dans l'URL de retour à l'aide du ViewBag pour éviter de polluer votre joli modèle .
Au contraire, le mettre dans le modèle le rend plus propre, car regarder le modèle vous montrera ce qu'il faut être à la vue. Le point de vue obscurcit votre mise en œuvre.
Merci! Cela fonctionne bien! Si je devais aller à l'approche code> ViewBag code>, comment continuer à perdre le returnrl code> si l'utilisateur n'est pas authentifié correctement? D'après ce que j'ai vu,
retournerl code> deviendra
null code> si un utilisateur ne s'authentifie pas correctement lors de sa première tentative. Est-ce que je manque quelque chose avec ça?
Si vous choisissez d'utiliser ViewBag CODE>, vous devrez écrire le champ masqué dans la zone de formulaire de votre vue, puis sur la requête suivante de votre méthode de contrôleur interrogeez la demande
code> objet pour le champ de formulaire "retour".
J'ai la même situation ici, et je n'obtiens pas à quel point le réglage de retour dans le champ caché a-t-il résolu ce problème? Est-ce qu'il redirige-t-il à returerl via JavaScript? Dans cette situation, il n'y aura pas de modèle de message Valition affiché?
La réponse de Ivan Korytin était la réponse. Meilleur (et seulement la réponse que je pouvais trouver ce qui semblait bien fonctionner correctement sans utiliser de hacks de terrain cachés) que j'ai Vous devez mettre les paramètres dans le cadre de l'action du formulaire: P > Lorsque vous exécutez les suivantes La chaîne de requête (et Demande.QuiserystString code>.
obtenez code> paramètres) sont maintenant conservées: p>
pour // GET: Vehicle/Edit/5
public ActionResult Edit(int id,string previous)
{
var model = this.UnitOfWork.CarsRepository.GetAllByCarId(id).FirstOrDefault();
var viewModel = this.Mapper.Map<VehicleViewModel>(model);//if you using automapper
//or by this code if you are not use automapper
var viewModel = new VehicleViewModel();
if (!string.IsNullOrWhiteSpace(previous)
viewModel.ReturnUrl = previous;
else
viewModel.ReturnUrl = "Index";
return View(viewModel);
}
[HttpPost]
public IActionResult Edit(VehicleViewModel model, string previous)
{
if (!string.IsNullOrWhiteSpace(previous))
model.ReturnUrl = previous;
else
model.ReturnUrl = "Index";
.............
.............
return RedirectToAction(model.ReturnUrl);
}
J'ai ajouté un exemple, j'espère que ce sera utile
Ce n'est pas vraiment valable pour les tags sur la question - TagHelPers a été ajouté dans ASP.NET CORE . Pourrait vouloir en faire une note de cela dans votre réponse.