Comment puis-je trouver le chemin absolu d'une action de contrôleur?

voix
2

Je dois générer un lien vers une action et envoyer le lien par e-mail. Je voudrais appeler quelque chose comme ceci:

public string GetAbsolutePath(string actionName, string controllerName, string id)
{
    // Somehow generate the absolute path
}

Je pense que je peux utiliser VirtualPathUtility.ToAbsolute (string virtualPath) mais je ne suis pas sûr comment obtenir soit le chemin virtuel.

Créé 27/08/2009 à 06:00
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
1

Vous pouvez utiliser le mécanisme de routage pour générer le lien pour vous. Il y a plusieurs façons de le faire, par exemple dans la vue que vous pouvez générer un lien vers une action

<%= Url.Action(actionName, controllerName, new {id=id} %>
Créé 27/08/2009 à 06:16
source utilisateur

voix
1

Quelque chose comme ça:

public string GetAbsolutePath(string actionName, string controllerName, string id)
{
    var relUrl = Url.RouteUrl(new { controller = controllerName, action = actionName, id = id });

    return Request.Url.GetLeftPart(UriPartial.Authority).TrimEnd('/') + relUrl;
}
Créé 27/08/2009 à 06:47
source utilisateur

voix
0

Vous pouvez utiliser le moteur de routage pour générer l'itinéraire pour vous donné le contrôleur et l'action. La propriété RouteCollection de votre contrôleur peut être utilisé comme suit:

string virtualPath = 
    RouteCollection.GetVirtualPath(context, new { 
                                                  action = actionName, 
                                                  controller = controllerName, 
                                                  id = id
                                                }
                                  ).VirtualPath;

string url = VirtualPathUtility.ToAbsolute(virtualPath);
Créé 27/08/2009 à 07:01
source utilisateur

voix
1

J'ai fini avec ceci:

public static string AbsoluteAction(this UrlHelper url, string action, string controller, object routeValues)
{
    Uri requestUrl = url.RequestContext.HttpContext.Request.Url;

    string absoluteAction = string.Format("{0}://{1}{2}",
                                          requestUrl.Scheme,
                                          requestUrl.Authority,
                                          url.Action(action, controller, routeValues, null));
    return absoluteAction;
}
Créé 02/09/2010 à 05:23
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more