2010-06-11 9 views
2

J'ai une application dans laquelle je veux passer des données entre Pages (Views) sans sessions. En fait, je veux appliquer certains paramètres à toutes les pages en utilisant la chaîne de requête. Par exemple si mon lien est comme "http://example.com?data=test1", alors je veux ajouter cette chaîne de requête à tout le lien là après et s'il n'y a pas de chaîne de requête alors flux normal. Je pensais s'il y a moyen que si nous obtenons la chaîne de requête dans n'importe quel lien pour l'application Web, une certaine propriété spécifique à l'utilisateur au niveau de l'application peut être définie qui peut être utilisée pour les pages suivantes.Comment faire passer des données entre des pages sans sessions dans ASP.net MVC

Merci, Ashwani

Répondre

2

Vous pouvez obtenir la chaîne de requête en utilisant la

Request.Url.Query 

et vos liens vers l'autre page, vous pouvez l'envoyer.

Voici une idée de la façon dont vous pouvez trouver et changer votre page:

public abstract class BasePage : System.Web.UI.Page 
{ 
    protected override void Render(System.Web.UI.HtmlTextWriter writer)  
    { 
     System.IO.StringWriter stringWriter = new System.IO.StringWriter(); 

     HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter); 

     // now you render the page on this buffer 
     base.Render(htmlWriter); 

     // get the buffer on a string 
     string html = stringWriter.ToString(); 

     // manipulate your string html, and search all your links (hope full find only the links) 
     // this is a simple example of replace, THAT PROBABLY not work and need fix   
     html = html.Replace(".aspx", ".aspx?" + Request.Url.Query); 

     writer.Write(html); 
    } 
} 

Je ne suggère pas comment jamais, et je pense que vous devez trouver une autre façon d'éviter de manipuler tous vos liens ...

+0

Merci. Mais le problème est qu'il peut y avoir plusieurs liens sur une page et je veux passer la valeur de la chaîne de requête à toutes les pages. Y at-il un moyen de définir une sorte de propriété qui peut être accessible à travers les pages? –

+0

@Ahwani Je peux penser à certaines façons ... hmm peut-être si vous obtenez le rendu final de la page et de changer tous les liens ... Je n'aime pas l'idée .. mais ... – Aristos

+0

Oui, j'ai pensé à cela aussi . Mais le problème ici est que les liens sont générés dynamiquement. Ne pouvons-nous pas avoir quelque chose de propriété qui peut être partagé entre les vues? –

0

Je ne devine pas le type de données que vous essayez de transmettre. Parce que ça me semble bizarre l'idée de piéger tous les liens.

Quoi qu'il en soit, je crois que vous trouverez peut-être la classe TempData pour transmettre des données USEFULL entre réoriente.

Et un dernier avertissement, attention sur les TempData, il a changé un peu entre MVC 1 et 2:
ASPNET MVC2: TempData Now Persists

+0

En fait, j'ai quelques paramètres qui peuvent être définis en utilisant une chaîne de requête comme le changement de fichiers CSS. Cela fonctionne pour la page qui est appelée avec la chaîne de requête, mais si un corps navigue vers d'autres liens de cette page, je veux que cette valeur soit disponible. –

Questions connexes