Comment puis-je conserver l'url (avec la chaîne de requête) après un Http Post mais aussi ajouter une erreur à l'état du modèle ?

Comment puis-je conserver l'url (avec la chaîne de requête) après un Http Post mais aussi ajouter une erreur à l'état du modèle ?

La réponse d'Ivan Korytin était la meilleure (et la seule réponse que j'ai pu trouver qui semblait fonctionner correctement sans utiliser de hacks de champ cachés) que j'ai un peu améliorée avec Request.QueryString .

Vous devez mettre les paramètres dans le cadre de l'action du formulaire :

<form action="@Url.Action("CreateEntity", "Employee")[email protected](Request.QueryString)"
  enctype="multipart/form-data" method="POST">

Lorsque vous effectuez les opérations suivantes, la chaîne de requête (et GET paramètres) sont désormais conservés :

[HttpPost]
public ActionResult MyAction(MyAction model)
{
    if (!ModelState.IsValid)
    {
        return View(model);
    }

Votre deuxième scénario n'a pas l'état du modèle car lorsque vous effectuez une redirection, le navigateur fait une demande distincte à cet emplacement, demandes séparées =nouvel état du modèle.

Je suggérerais d'utiliser votre premier scénario et de placer un "ReturnUrl" dans votre modèle et de le rendre au client sous forme de champ caché.

//In your model add the ReturnUrl Property
public class AuthenticatModel
{
     public string Account {get; set;}
     public string SocialSecurityNumber {get;set;}
     public string ReturnUrl {get;set;}
}



ModelState.AddModelError("Authenticated", authenticationError);
//Set the return URL property before returning the view
model.ReturnUrl = returnUrl;
return View(model);


@* add the return URL as a hidden field to your view so it can be posted back *@
@Html.HiddenFor(model => model.ReturnUrl)