17

我目前的要求是:

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

我想在asp.net视图层显示一个动作url,url是这样的(完整的url,包括http://protocol + hostname + port + controllerName + actionName):

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

4

2 回答 2

41

在此处输入图像描述

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 }))
{
}
于 2013-09-01T01:05:14.623 回答
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>
于 2013-09-01T01:19:28.163 回答