Как создать 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 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>
Ответ 1 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>