Подтвердить что ты не робот

ASP.NET MVC - как получить полный путь к действию

Внутри представления я могу получить полную информацию о маршруте к действию?

Если у меня есть действие под названием DoThis в контроллере MyController. Могу ли я перейти на путь "/MyController/DoThis/"?

4b9b3361

Ответ 1

Вы имеете в виду использование метода Action в помощнике Url:

<%= Url.Action("DoThis", "MyController") %>

или в Razor:

@Url.Action("DoThis", "MyController")

который даст вам относительный url (/MyController/DoThis).

И если вы хотите получить абсолютный URL-адрес (http://localhost:8385/MyController/DoThis):

<%= Url.Action("DoThis", "MyController", null, Request.Url.Scheme, null) %>

Ответ 2

Несколько дней назад я написал сообщение в блоге об этой самой теме (см. Как создавать URL-адреса абсолютного действия с использованием класса UrlHelper). Как отметил Дарин Димитров: UrlHelper.Action будет генерировать абсолютные URL-адреса, если параметр protocol указан явно.

Однако я рекомендую написать собственный метод расширения для удобства чтения:

/// <summary>
/// Generates a fully qualified URL to an action method by using
/// the specified action name, controller name and route values.
/// </summary>
/// <param name="url">The URL helper.</param>
/// <param name="actionName">The name of the action method.</param>
/// <param name="controllerName">The name of the controller.</param>
/// <param name="routeValues">The route values.</param>
/// <returns>The absolute URL.</returns>
public static string AbsoluteAction(this UrlHelper url,
    string actionName, string controllerName, object routeValues = null)
{
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;

    return url.Action(actionName, controllerName, routeValues, scheme);
}

Затем метод можно вызвать следующим образом: @Url.AbsoluteAction("SomeAction", "SomeController")

Ответ 3

Вы можете использовать метод Url.Action, где вы можете просто передать имя контроллера и требуемое действие, и оно будет генерировать соответствующий URL-адрес для вас, например

Url.Action("MyController", "DoThis")