2009-08-27 51 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); 
相關問題