Как мне найти абсолютный путь действия контроллера? - PullRequest
2 голосов
/ 27 августа 2009

Мне нужно создать ссылку на действие и отправить ссылку по электронной почте. Я хотел бы назвать что-то вроде этого:

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

Я думаю, что могу использовать VirtualPathUtility.ToAbsolute (строка virtualPath), но я также не уверен, как получить виртуальный путь.

Ответы [ 4 ]

2 голосов
/ 27 августа 2009

Примерно так:

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;
}
1 голос
/ 02 сентября 2010

Я закончил с этим:

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 голос
/ 27 августа 2009

Вы можете использовать механизм маршрутизации, чтобы создать ссылку для вас. Есть несколько способов сделать это, например, в представлении вы можете сгенерировать ссылку на действие с помощью

<%= Url.Action(actionName, controllerName, new {id=id} %>
0 голосов
/ 27 августа 2009

Вы можете использовать механизм маршрутизации для генерации маршрута для вас с учетом контроллера и действия. Свойство RouteCollection вашего контроллера можно использовать следующим образом:

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

string url = VirtualPathUtility.ToAbsolute(virtualPath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...