Asp.net mvc 4 相对路径波浪号(~)在ASP.NET MVC 4中不起作用

Asp.net mvc 4 相对路径波浪号(~)在ASP.NET MVC 4中不起作用,asp.net-mvc-4,relative-path,razor-2,Asp.net Mvc 4,Relative Path,Razor 2,当我在我的机器上运行我的项目时,它运行在http://localhost:53998/但当我将其部署到http://test.myserver.com/MyApp/所有链接都断开。我使用的是相对路径瓷砖(~),因此导航链接类似于: <a href="~/SomeCtrl/Index">Some Action</a> 这是: <a href="@Url.Action("Index", "SomeCtrl")">Some Action</a> 我

当我在我的机器上运行我的项目时,它运行在
http://localhost:53998/
但当我将其部署到
http://test.myserver.com/MyApp/
所有链接都断开。我使用的是相对路径瓷砖(
~
),因此导航链接类似于:

<a href="~/SomeCtrl/Index">Some Action</a>
这是:

<a href="@Url.Action("Index", "SomeCtrl")">Some Action</a>


我也遇到了类似的问题,在我的案例中,答案是我有一些URL重写设置,这些设置正在更改波浪线路径以指向不同的文件夹。我必须整理这些重写规则,它解决了我的问题。

您是否尝试过使用
@Url.Action(“ActionName”、“ControllerName”)
?e、 g.
@Url.Action(“Index”,“SomeCtrl”)
您还可以使用具有相同参数(加上“link text”)的
@Html.ActionLink(),但这里可能有一个线索:-看起来它使用了
请求。ApplicationPath
-可能它选择了错误的路径-或者可能您在IIS中定义的应用程序级别高于您想要的站点根目录您不能在框架处理的除代码之外的任何代码中使用tilda。正如您所看到的,“”不起作用@KenBrittain这不是真的,MVC4及以上版本将正确地将
~
处理为相对URL。你链接到的问题是在那之前提出的。
<a href="@Url.Action("Index", "SomeCtrl")">Some Action</a>