Как создать URL-адрес для действия ASP.NET MVC, включая имя хоста и порт?

Мой текущий запрос:

http://www.mofeng.com:4355/

Я хочу отобразить URL-адрес действия в asp.net view layer, url выглядит так (полный URL-адрес, включая http://protocol + hostname + port + controllerName + actionName):

http://www.mofeng.com:4355/controllerX/actionY

Ответ 1

enter image description here

Url.Action("Action", "Controller", null, Request.Url.Scheme);

Как включить в атрибут Form Action следующее:

1. Протокол (http://или https://)
2. HostName
3. QueryString
4. Порт

@{
    var actionURL = Url.Action("Action", "Controller", 
                               FormMethod.Post, Request.Url.Scheme)  
                    + Request.Url.PathAndQuery;
}
@using (Html.BeginForm("Action", "Controller", FormMethod.Post, 
                                                   new { @action = actionURL }))
{
}

Ответ 2

помимо маршрута по умолчанию:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Application", action = "Index", id = UrlParameter.Optional }
        );

вам может понадобиться реализовать новый:

        routes.MapRoute(
            name: "ControllerXActionYRoute",
            url: "controllerX/actionY",
            defaults: new { controller = "controllerX", action = "actionY" }
        );

а затем вы можете использовать:

<div>@Url.Action("Action", "Controller", null, Request.Url.Scheme);</div>

* EDIT: *

чтобы получить полный URL-адрес, вы должны перейти в абсолютный.

<div>VirtualPathUtility.ToAbsolute(@Url.Action("Action", "Controller"));</div>