Comment rediriger une page ASP.NET vers une autre ("Webform2.aspx") au moyen d'un bouton?
Vous pouvez rediriger d'une page à une autre à l'aide de Response.Redirect()
définissez la propriété PostBackUrl de button, comme ceci:
button1.PostBackUrl= "Webform2.aspx";
Personnellement, si tout ce que vous voulez faire est de charger une nouvelle page lorsque vous cliquez sur un bouton, je le ferais avec un script côté client.
Vous pouvez utiliser une bibliothèque JS pour cela (par exemple: jQuery), comme ceci:
jQuery
$(function() {
$('#<%= button1.ClientID %>').click(function() {
window.location.href = "Webform2.aspx";
});
});
ASP.NET
<asp:Button id="button1" runat="server"/>
Vous pouvez également utiliserButton.PostBackUrl
, comme le suggère Antonio, pour utiliser un script côté client tout en évitant de devoir l'écrire vous-même. Le code HTML du bouton s'affiche comme suit:
<input type="submit" name="button1" value="Button" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("button1", "", true, "", "webform2.aspx", false, false))" id="button1" />
Si vous avez un autre traitement à effectuer côté serveur et que vous devez rediriger par la suite, utilisez Response.Redirect("Webform2.aspx");
dans votre gestionnaire de clics.
Si cela ne fonctionne pas pour vous, veuillez ajouter des détails supplémentaires à votre question pour expliquer ce qui se passe.
Vous pouvez rediriger vers une autre page ASP.NET en utilisant le code ci-dessous:
Response.Redirect("Webform.aspx");
C'est le moyen le plus simple
Eh bien, il y a beaucoup de façons. Response.Redirect
, Server.Transfer
, appel Javascript à la page.
Un appel Javascript est requis lorsque vous n'avez aucune action côté serveur pour le bouton. onclick="javascript:window.location.href = Webform2.aspx?id='<%=Request.QueryString["id"]%>'
"
Server.Transfer
effectuera une redirection côté serveur. c'est-à-dire que le navigateur s'affichera toujours après la réponse de webform2. Webform1.aspx va rediriger la demande vers webform2 et webform2 donnera le req. (Req = 1, Res = 1)
Response.Redirect
: webform1 enverra une réponse demandant au navigateur de faire une nouvelle requête à webform2. Dans ce cas, le navigateur modifiera l’URL lorsqu’il créera un nouveau req dans webform2 (Req = 1 + 1, Res = 1 + 1).
Il y a une autre manière, form.submit()
si vous êtes intéressé. Le formulaire HTML traditionnel soumettre.
J'ai oublié de mentionner le meilleur de tous, la postback de page croisée avec l'URL PostBack .. http://aspdotnetcode.source-of-humor.com/TipsAndTricks/General/CrossPagePostbackAspNetCrossPagePostback.aspx
Vous pouvez utiliser le code ci-dessous:
protected void Button1_Click(object sender, EventArgs e) {
Response.Redirect("default2.aspx");
}
Notez que default2.aspx
est le nom de votre deuxième page Web et vous
Les méthodes Response.Redirect et Server.Transfer sont toutes deux utilisées pour transférer un utilisateur d'une page Web à une autre. Les deux méthodes sont utilisées dans le même but mais il existe néanmoins quelques différences comme suit.
La méthode Response.Redirect redirige une demande vers une nouvelle URL et spécifie la nouvelle URL tandis que la méthode Server.Transfer pour la demande en cours met fin à l'exécution de la page en cours et lance l'exécution d'une nouvelle page à l'aide du chemin d'URL spécifié de la page.
Response.Redirect et Server.Transfer ont une syntaxe identique à celle-ci:
Response.Redirect ("UserDetail.aspx"); Server.Transfer ("UserDetail.aspx");
Avant d’aborder plus de points, je voudrais expliquer certains codes d’état HTTP, qui sont importants pour comprendre les différences fondamentales entre ces deux. Les codes d'état HTTP sont les codes que le serveur Web utilise pour communiquer avec le navigateur Web ou l'agent utilisateur. Response.Redirect envoie une requête HTTP au navigateur, qui l'envoie ensuite au serveur Web, puis celui-ci envoie une réponse au navigateur. Par exemple, supposons que vous vous trouviez sur la page Web "UserRegister.aspx" et qu’un bouton vous redirige vers la page Web "UserDetail.aspx".
Response.Redirect(string url)
émet un code de statut HTTP 302 demandant au client de se rediriger vers url
. Le navigateur émettra une nouvelle demande pour url
et l'URL changera dans la barre d'adresse.
Server.Transfer(string path)
termine l'exécution de la page en cours et lance l'exécution d'une nouvelle page sur la path
spécifiée en interne dans IIS. Par conséquent, l'URL dans la barre d'adresse du navigateur ne sera pas modifié. La page que vous transférez doit être une aspx page du même site Web.
Les différences sont subtiles mais importantes. Une façon simple de penser à cela est de vous demander "l’utilisateur/favori de cette URL?". Utilisez Response.Redirect
si l'URL a été modifiée et que les futures visites du contenu doivent figurer sur la nouvelle URL. Utilisez Server.Transfer
si l'URL est correcte et actuelle, mais vous devez afficher un contenu différent cette fois-ci. Vous pouvez peut-être afficher un message d'erreur ou demander à l'utilisateur de saisir ses informations d'identification pour continuer ou s'il existe une autre raison pour laquelle le contenu devrait changer mais l'URL ne devrait pas.
Vous pouvez utiliser l'un ou l'autre de ces éléments dans le gestionnaire d'événements Click
d'un contrôle de bouton ASP.NET dans votre code-behind:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Redirect("Webform2.aspx");
// OR
Server.Transfer("Webform2.aspx");
}