Action 和 ActionLink 不适用于 ASP.NET Mono Razor 视图

Action and ActionLink not working on ASP.NET Mono Razor views

如何在没有 @Url.*@Html.*

的情况下在 Razor 中使用 hyper linking

据我所知,link 视图在 ASP.NET MVC 中有 4 种方法:

我可以使用它们,例如:

<a href=@Url.Action("ActionName","ControllerName")> Test </a>

生成:

<a href="ControllerName/ActionName"> Test </a>

除了上面提到的 4 种方法之外,还有没有办法在 ASP.NET MVC Razor 中生成 Url 部分,即 "ControllerName/ActionName"

背景:Mono is 。如果某种 Url 生成成功,那么我们可以在 Mono 上使用 ASP.NET MVC 5 和 Razor。

嗯,你可以随时查看 ASP.NET MVC 源代码,并复制你需要的东西,如果它还没有在单声道中实现的话。 您可以在这里找到它:https://github.com/ASP-NET-MVC/aspnetwebstack/blob/master/src/System.Web.Mvc/Html/LinkExtensions.cs

但我一直在使用 mono 和 ASP.NET MVC 4,我没有遇到像你这样的问题。 这是我在 github 上的代码,在单声道和 xsp 上是 运行。 https://github.com/rstraszewski/HomeCenter/tree/master/HomeCenter.Presentation

如您所见,例如在_Layout.cshtml中,我使用的是Html.ActionLink...虽然我使用windows和visual studio进行编译和开发,和单声道仅用于运行时...

您还可以创建自己的 html 助手来生成 links... 还有一个 Html.RouteLink 辅助方法,它也可以生成一个 link.

使用示例Html.RouteLink:

@Html.RouteLink("Some link", "Default", new RouteValueDictionary(new {controller = "Home", action = "Index"}))

是的,你也可以使用类似的东西:

<a href="~/Home/Index">Some link</a>

注意 ~/ 在上面的代码片段中很重要,没有它 Url 会表现出奇怪的行为,但你需要记住,这会起作用,因为这是默认路由的工作方式...如果您更改默认路由,这将无法工作。