Dans les versions précédentes d'asp.net, nous pourrions utiliser
@Request.Url.AbsoluteUri
Mais il semble que cela ait changé. Comment pouvons-nous faire cela dans asp.net core 1.0?
asp.net-core
asp.net-core-mvc
asp.net-core-1.0
oneNiceFriend
la source
la source
Réponses:
Vous devez obtenir l'hôte et le chemin séparément.
la source
@
entre les deux chaînes? pouvez-vous l'expliquer?@HttpContext
place@Context
. Pour les vues partielles@Context
fonctionne. Ai-je oublié une utilisation?Url.Action("Action", null, null, Request.Url.Scheme);
stackoverflow.com/questions/434604/…Vous avez besoin d'un schéma, d'un hôte, d'un chemin et d'une chaîne de requête
ou en utilisant la nouvelle fonctionnalité C # 6 "Interpolation de chaîne"
la source
Vous pouvez utiliser la méthode d'extension de
Request
:la source
@using Microsoft.AspNetCore.Http.Extensions
ensuite@Context.Request.GetDisplayUrl()
Suitable only for display. This format should not be used in HTTP headers or other HTTP operations.
Sur cette base, je pense que la solution de @ tmg est la meilleure (peut-être enveloppée dans votre propre méthode d'extension).C'était apparemment toujours possible dans .net core 1.0 avec
Microsoft.AspNetCore.Http.Extensions
, qui ajoute une extensionHttpRequest
pour obtenir l'URL complète; GetEncodedUrl .par exemple de la vue rasoir:
Depuis 2.0, ont également un chemin relatif et une requête GetEncodedPathAndQuery .
la source
Utilisez la propriété AbsoluteUri de l'URI, avec .Net core, vous devez créer l'URI à partir d'une requête comme celle-ci,
Par exemple, si l'url de la requête est « http://www.contoso.com/catalog/shownew.htm?date=today », cela renverra la même URL.
la source
Vous pouvez envisager d'utiliser cette méthode d'extension (depuis l'
Microsoft.AspNetCore.Http.Extensions
espace de noms:Pour certains de mes projets, je préfère une solution plus flexible. Il existe deux méthodes d'extensions.
1) La première méthode crée un
Uri
objet à partir des données de demande entrantes (avec certaines variantes via des paramètres facultatifs). 2) La deuxième méthode reçoit l'Uri
objet et renvoiestring
au format suivant (sans barre oblique à la fin): Scheme_Host_PortUsage:
la source
la source
httpContext
? Cela ne fonctionnera pas avecMicrosoft.AspNetCore.Http.HttpContext.Request
Si vous souhaitez également obtenir le numéro de port de la demande, vous devrez y accéder via le
Request.Host
propriété pour AspNet Core.La
Request.Host
propriété n'est pas simplement une chaîne, mais plutôt un objet qui contient à la fois le domaine hôte et le numéro de port. Si le numéro de port est spécifiquement écrit sur l'URL ( par exemple"https://example.com:8080/path/to/resource"
), puis en appelantRequest.Host
vous donnera le domaine hôte et le numéro de port comme ceci:"example.com:8080"
.Si vous souhaitez uniquement la valeur du domaine hôte ou uniquement la valeur du numéro de port, vous pouvez accéder à ces propriétés individuellement (c'est
Request.Host.Host
-à- dire ouRequest.Host.Port
).la source
La réponse acceptée m'a aidé, tout comme le commentaire de @padigan, mais si vous souhaitez inclure les paramètres de chaîne de requête comme c'était le cas pour moi, essayez ceci:
Et vous devrez ajouter
@using Microsoft.AspNetCore.Http.Extensions
la vue pour que la méthode GetEncodedPathAndQuery () soit disponible.la source
Il existe un moyen simple d'obtenir l'URL actuelle à partir d'une page Razor ou d'une classe PageModel. C'est:
Veuillez noter que je voulais dire, les « Pages Razor ASP.NET Core ", pas le MVC.
J'utilise cette méthode lorsque je souhaite imprimer la balise meta d'URL canonique dans les pages de rasoir ASP.NET Core. Mais il ya un hic. Il vous donnera l'URL qui est censée être la bonne URL pour cette page. Laisse-moi expliquer.
Supposons que vous ayez défini un itinéraire nommé "id" pour votre page et que, par conséquent, votre URL devrait ressembler à
Le Url.PageLink () vous donnera exactement cette URL comme indiqué ci-dessus.
Maintenant, si l'utilisateur ajoute quelque chose de plus sur cette URL, disons,
Ensuite, vous n'obtiendrez pas ce "somethingElse" de cette méthode. Et c'est pourquoi il est parfait pour imprimer la balise meta d'URL canonique dans la page HTML.
la source