如何在ASP.NET MVC中获取不带参数的Action的URL

Hüs*_*ğlı 5 c# asp.net url asp.net-mvc routes

我有一个ASP.NET MVC Web应用程序,它运行在IIS上的虚拟目录中.在应用程序中,我有一个Action,它接受一个名为Id的参数.

public class MyController : MyBaseController 
{
    public ActionResult MyAction(int id)
    {
        return View(id);
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用参数123调用Action时,生成的URL如下所示:

http://mywebsite.net/MyProject/MyController/MyAction/123
Run Code Online (Sandbox Code Playgroud)

基本控制器中,如何在没有任何参数的情况下优雅地找到Action的URL?我想要的字符串是:/MyProject/MyController/MyAction

关于此问题还有其他问题,但它们不包括这些案例.例如,Request.Url.GetLeftPart仍然给我Id.

bur*_*kay 2

@trashr0x 的答案解决了问题的最大部分,但遗漏了该MyProject部分,并且不需要字典来构造所询问的字符串。这是一个简单的解决方案:

var result = string.Join("/", new []{ 
    Request.ApplicationPath, 
    RouteData.Values["controller"], 
    RouteData.Values["action"] 
});
Run Code Online (Sandbox Code Playgroud)