0

我在 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.

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

4

3 回答 3

2

如果是 MVC 应用程序,则使用“~/ControllerName/Action”而不是尝试获取绝对路径。我在我的项目中使用了下面的代码,它对我来说就像一个魅力。

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

谢谢,玛纳斯萨胡

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

于 2015-01-05T10:09:28.793 回答
1

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

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

例如:

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

这应该产生类似的东西:

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

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

于 2015-01-05T10:29:17.673 回答
0

以这种方式尝试

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

更新

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

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

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

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

否则,如果您调用特定控制器的操作,您可以执行

Url.Action("ActionName", "ControllerName")
于 2015-01-05T10:00:17.930 回答