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