在c#中获取绝对路径以进行导航

时间:2015-01-05 09:50:50

标签: c# asp.net asp.net-mvc asp.net-mvc-routing server.mappath

我在c#中创建了一个MVC应用程序,它有不同的菜单和子菜单。 我面临的问题是导航, 路由链接看起来像这样

http://localhost/menu/1
http://localhost/submenu/5
http://localhost/submenu3/1

我只能在菜单href中找到核心链接,因此我正在寻找一些命令给我http://localhost的绝对路径,以便我可以使用它来进行动态导航,在PHP中使用$_SERVER变量非常简单,但我无法在此处找到任何函数。

Server.MapPath("/") gives me my local drive address where it is stored.

在这方面的任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

如果是MVC应用程序,则使用"〜/ ControllerName / Action"而不是试图获得绝对路径。我在我的项目中使用了以下代码,它对我来说就像一个魅力。

<a id="aprimA" href="~/Account/StartingorMaintaining">HOME</a>

谢谢, 玛纳斯萨胡

我的博客:http://justsharingfun.blogspot.com/

答案 1 :(得分:1)

您无需为生成链接的绝对路径而烦恼。

您应该使用 Url.Action(string actionName, string controllerName,Object routeValues) 方法。如果您有RouteValues,则可以使用第三个参数将它们添加为匿名类型。

E.G:

    Url.Action("Details","Widget",new {widgetId = 1})

应生成如下内容:

    http://yourhost.com/Widget/Details/1

取决于您的路线值的设置方式。

答案 2 :(得分:0)

以这种方式尝试

HttpContext.Current.Server.MapPath("~/menu/1");

<强>更新

如果它不起作用,你可以尝试

HostingEnvironment.MapPath("~/menu/1");

通常在mvc应用程序中我使用

var url = Url.Content("~/menu/1");

否则,如果你召集特定控制人的行动,你可以做

Url.Action("ActionName", "ControllerName")