2010-04-23 5 views
2

Par exemple, ce que j'ai droit est maintenant la suivante:Utilisation de redirection ASP.NET sans chaîne URL?

Page.Response.Redirect("Default.aspx", false); 

Ayant besoin de coder la chaîne semble juste étrange pour moi. La page Default.aspx est déjà dans mon projet. Alors, est-il un moyen de faire quelque chose redirect comme suit:

Page.Response.Redirect(Default.aspx, false); 

Où Default.aspx est juste le formulaire Web. Je pense que de cette façon, il serait évident s'il y avait un problème tel que vous avez supprimé le formulaire Web, mais n'a pas mis à jour les redirections.

Est-ce possible? Ou y a-t-il une autre façon de voir cela?

Je suppose que je pourrais faire quelque chose avec une propriété statique sur la classe, mais je me demande s'il y a une chose intégrée pour cela?

+0

Merci pour l'aide que tout le monde ... Je vais probablement aller avec des chaînes de ressources, je pense. –

Répondre

2

Default.aspx est différent de la classe Default, qui est généré automatiquement pour vous par l'EDI. Vous pouvez facilement avoir plusieurs fichiers .aspx héritant de la même classe Page.

C'est pourquoi il n'y a pas de mécanisme intégré pour cela - il n'y a aucune garantie d'une relation 1 à 1 entre les pages de balisage et les classes de code.

La meilleure façon de gérer cela est probablement de simplement affecter les chaînes que vous utilisez pour la redirection si vous le faites à plusieurs endroits.

1

En théorie, ce que vous suggérez a beaucoup de sens, mais pas tous les sites Web utilisent des fichiers pour héberger du contenu. Par exemple, vous pouvez exécuter un site Web à partir d'un fichier compressé compressé (http://msdn.microsoft.com/en-us/library/aa479502.aspx) ou d'un autre type de source à l'aide de fournisseurs de chemins virtuels.

Pourtant, je peux voir la valeur d'une fonctionnalité comme celle-ci. Vous voudrez peut-être suggérer à l'équipe VS IDE:

http://connect.microsoft.com/VisualStudio

0

Je comprends ce que vous voulez atteindre, et je suppose que vous pouvez créer votre propre méthode:

public string GetPageName(Type t) 
{ 
    return t.name + ".aspx"; 
} 

Et l'appeler comme ceci:

Response.Redirect(typeof(Default)); 

Le problème est que c'est en aucun cas infaillible. Tout d'abord, vous devez vous assurer que cette méthode est toujours appelée avant de la rediriger, sinon elle serait inutile. Un autre problème est que vous ne savez pas que Default.aspx est dans le dossier racine. Et qu'en est-il de tous vos HttpHandlers, dont le chemin est configuré dans web.config ou via un fichier .ashx.

Mise à jour Et aussi considérer le grand point soulevé par @womp

0

Si vous utilisez l'authentification par formulaire, il y a un paramètre dans le web.config pour une DefaultUrl qui serait une idée intégrée pour utilisation.