2009-08-07 11 views
3

Je suis débutant en train d'apprendre ASP.NET avec C# comme langage de programmation.server.Transfer avec la chaîne de requête

Actuellement, je travaille avec HTTPSERVERUTILITY.

J'ai créé un formulaire Web nommé Default.aspx et Default2.aspx:

J'ai écrit le codage suivant:

Default.aspx:

Vu source

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 

</div> 
</form> 

Dans fichier code-behind:

Button1_Click protected void (object sender, EventArgs e) {

Server.Transfer("Default2.aspx ? name =roseline & password = [email protected]"); 
} 

codage pour Default2.aspx:

Dans Source Vue:






Dans fichier code-behind:

public string n, p; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    n = Request.QueryString["name"]; 
    p = Request.QueryString["password"]; 

} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    TextBox1.Text = n; 
    TextBox2.Text = p; 
} 

Quand j'exécuter l'application ci-dessus, je ne reçois aucune erreur. Lorsque je clique sur le Button1 dans Default.aspx, il me montre le Default2.aspx, mais quand je clique sur le bouton je ne reçois pas les valeurs dans le TextBox, les TextBoxes sont vides sans aucune valeur. Est-ce que quelqu'un peut me dire quel est le problème avec mon codage? Pourquoi n'affiche pas les valeurs dans les TextBoxes?

S'il vous plaît aidez-moi!

Merci d'avance!

Répondre

7

Vous ne pouvez pas ajouter une chaîne de requête dans Server.Transfer.

Vous pouvez transmettre des valeurs dans le contexte

Par exemple:

Context.Items["ParamName"] = value; 

Vous pouvez obtenir les différences entre Server.Transfer et réponse.Dévier à partir de here

+0

Je suivais un livre que je suis le même codage, mais même alors, il ne fonctionne pas la tâche souhaitée. Dans ce livre, la méthode Server.Transfer est uniquement utilisée pour querystring. – Sheetal

2

Essayez d'utiliser

Response.Redirect("default.aspx?name =roseline&[email protected]"); 

à la place. Plus d'informations sur les différences entre Response.Redirect et Server.Transfer voir this page.

EDIT: Répondu un peu trop vite, Response.Redirect n'utilise pas la classe HttpServerUtility hors cours. Cependant, je dirais que l'utilisation de Response.Redirect est la manière normale d'y parvenir.

0

Utilisez Response.Redirect au lieu:

Response.Redirect("Default2.aspx?name=roseline&[email protected]"); 

Cependant, vos valeurs sera visible dans l'URL, et qui ne peut être pratique. Il existe de nombreux autres moyens de transférer des valeurs entre les demandes de pages, tous ont leurs avantages et leurs inconvénients.

1

Source.aspx

protected void Button1_Click(object sender, EventArgs e) 
    { 
     HttpContext _context = HttpContext.Current; 
     _context.Items.Add("name", roseline); 
     _context.Items.Add("password", [email protected]); 
     Server.Transfer("Destination.aspx"); 
    } 

Destination.aspx

protected void Page_Load(object sender, EventArgs e) 
    { 
     HttpContext _context = HttpContext.Current; 
     Response.Write(_context.Items["name"]); 
     Response.Write(_context.Items["password"]); 
    } 
1

Vous pouvez utiliser cette façon.

string url = $"~/Registration.aspx?price={price}&membershipId={membershipId}"; 
Server.Transfer(url); 

Et pour lire les valeurs simplement vous devez utiliser:

string membershipId = Request.QueryString["membershipId"]; 
Questions connexes