J'ai pensé que je pourrais partager mon approche pour faire cela dans ASP.NET MVC en utilisant la fonction Uri
et un peu de magie d'extension.
public static class UrlHelperExtensions
{
public static string AbsolutePath(this UrlHelper urlHelper,
string relativePath)
{
return new Uri(urlHelper.RequestContext.HttpContext.Request.Url,
relativePath).ToString();
}
}
Vous pouvez ensuite produire un chemin absolu en utilisant :
// gives absolute path, e.g. https://example.com/customers
Url.AbsolutePath(Url.Action("Index", "Customers"));
Le fait d'avoir des appels de méthodes imbriqués est un peu laid, c'est pourquoi je préfère étendre encore plus la méthode UrlHelper
avec des méthodes d'action communes pour que je puisse le faire :
// gives absolute path, e.g. https://example.com/customers
Url.AbsoluteAction("Index", "Customers");
ou
Url.AbsoluteAction("Details", "Customers", new{id = 123});
La classe d'extension complète est la suivante :
public static class UrlHelperExtensions
{
public static string AbsolutePath(this UrlHelper urlHelper,
string relativePath)
{
return new Uri(urlHelper.RequestContext.HttpContext.Request.Url,
relativePath).ToString();
}
public static string AbsoluteAction(this UrlHelper urlHelper,
string actionName,
string controllerName)
{
return AbsolutePath(urlHelper,
urlHelper.Action(actionName, controllerName));
}
public static string AbsoluteAction(this UrlHelper urlHelper,
string actionName,
string controllerName,
object routeValues)
{
return AbsolutePath(urlHelper,
urlHelper.Action(actionName,
controllerName, routeValues));
}
}
0 votes
2 réponses connexes à : stackoverflow.com/questions/7413466/ et stackoverflow.com/questions/3933662/