我目前的要求是:
我希望在asp.net视图层中显示一个动作网址,网址就像这样(完整网址,包括 http://协议 + 主机名 + 端口 + controllerName + actionName ):
答案 0 :(得分:33)
Url.Action("Action", "Controller", null, Request.Url.Scheme);
<强> 1。协议(http://或https://)
的 2。主机名强>
第3。查询字符串强>
的 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 }))
{
}
答案 1 :(得分:4)
除了默认路线:
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>
* 编辑:*
要获得完整的网址,你必须绝对。
<div>VirtualPathUtility.ToAbsolute(@Url.Action("Action", "Controller"));</div>