6
votes

Maintenir le querystring dans toutes les pages de MVC

J'ai besoin de maintenir la requête dans toutes les pages de mon application ASP.NET MVC (C #).

pour ex.: Je vais appeler une page www.example.com?preview=true . Le QueryString doit être maintenu quelle que soit la page I clic dans www.example.com . c'est-à-dire quand je clique sur à propos de nous page dans www.example.com , l'URL doit être www.example.com/aboutus?preview=true

Comment puis-je y parvenir? Quel est le meilleur endroit pour faire cette opération commune?


2 commentaires

Pensez à si quelque chose ne va pas avec votre conception, vous ne devriez pas avoir besoin de le faire .. Je suppose.


Je dois donner cette option pour désactiver toutes les commandes du deuxième site Web, si l'utilisateur clique sur l'aperçu du deuxième site Web à partir du site Web principal.


3 Réponses :


0
votes

Vous pouvez créer une aide de vue qui ajoute à la chaîne de requête existante sur les liens que vous créez avec votre nouvel assistant.

Ceci peut Aide

Vous ferez peut-être mieux de stocker ces informations en session.


0 commentaires

2
votes

Peut-être que vous avez besoin d'un itinéraire personnalisé?:

routes.MapPreviewRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);


3 commentaires

Où utiliser cette route personnalisée?


Y a-t-il une autre solution sauf la session? Parce que lorsque je l'ai intégré, j'ai peu de problèmes .. I.e. Lorsque l'utilisateur clique sur l'aperçu, il affiche le deuxième site Web dans Aperçu avec tous les contrôles désactivés. Et en même temps, lorsque l'utilisateur le considère comme en direct, même les contrôles seront désactivés, car il a la touche "Aperçu" en session


Si l'utilisateur passe de l'aperçu en mode LIVE, vous souhaitez supprimer cette clé "Aperçu" de la session.



0
votes

Une excellente direction de @ EU-GE-NE.

J'ai utilisé l'idée de la route personnalisée de @ EU-GE-NE pour ajouter la valeur de l'itinéraire à chaque URL et utilisé un basocontrôleur pour gérer la clé de l'aperçu SESSION. P>

if ((requestContext.HttpContext.Request.QueryString != null &&
     requestContext.HttpContext.Request.QueryString["Preview"] != null &&
     requestContext.HttpContext.Request.QueryString["Preview"].ToString() =="True") ||
     (requestContext.HttpContext.Request.UrlReferrer != null &&
     requestContext.HttpContext.Request.UrlReferrer.ToString().Contains("Preview=True")))
    {
         //Add the preview key to session
    }
    else
    {
         //Remove the preview key to session
    }


0 commentaires