2009-08-27 53 views
2

我需要生成指向动作的链接并通过电子邮件发送链接。我想打电话是这样的:如何找到控制器操作的绝对路径?

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

我认为我可以使用VirtualPathUtility.ToAbsolute(字符串virtualPath),但我不知道如何让虚拟路径要么。

回答

1

我结束了与此:

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; 
} 
1

您可以使用路由机制为您生成链接。有几种方法可以做到这一点,例如在视图您可以生成一个链接到行动

<%= Url.Action(actionName, controllerName, new {id=id} %> 
1

事情是这样的:

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; 
} 
0

可以使用路由引擎为您提供的控制器和动作生成路径。控制器的RouteCollection属性可用于如下:

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

string url = VirtualPathUtility.ToAbsolute(virtualPath); 
相关问题