web-dev-qa-db-ja.com

ホスト名とポートを含むASP.NET MVCアクションのURLを生成する方法は?

私の現在のリクエストは:

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

Asp.netビューレイヤーにアクションURLを表示したいのですが、URLは次のようになります(を含む完全なURLhttp:// protocol+hostname+port+controllerName+actionName):

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

13
paul cheung

enter image description here

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

フォームアクション属性に以下を含める方法

1。プロトコル(http://またはhttps://)
2。HostName
。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 }))
{
}
34
Imad Alazani

デフォルトルートの他に:

        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>

* 編集:*

完全なURLを取得するには、絶対に移動する必要があります。

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