web-dev-qa-db-fra.com

Comment générer une URL pour l'action ASP.NET MVC, y compris le nom d'hôte et le port?

Ma demande actuelle est:

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

Je veux afficher une URL d'action dans la couche de vue asp.net, l'URL est comme ceci (URL complète, y compris http: // protocole + nom d'hôte + 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);

Comment inclure les éléments suivants dans l'attribut Action de formulaire?

1. Protocole (http: // ou https: //)
2. HostName
. QueryString
4. Port

@{
    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

outre la route par défaut:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Application", action = "Index", id = UrlParameter.Optional }
        );

vous devrez peut-être en implémenter un nouveau:

        routes.MapRoute(
            name: "ControllerXActionYRoute",
            url: "controllerX/actionY",
            defaults: new { controller = "controllerX", action = "actionY" }
        );

puis vous pouvez utiliser:

<div>@Url.Action("Action", "Controller", null, Request.Url.Scheme);</div>

* MODIFIER: *

pour obtenir l'url complète, vous devez aller à l'absolu.

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