在 ASP.NET MVC 5 Mono 中使用 Razor Url 助手时找不到方法 'RouteCollection.get_AppendTrailingSlash'

Method 'RouteCollection.get_AppendTrailingSlash' not found when using Razor Url helpers in ASP.NET MVC 5 Mono

我正在创建一个 ASP.NET MVC 5 application in Mono(Ubuntu 14.4,Monodevelop 5.9,Mono JIT 编译器版本 4.0.1)。

我看到某些剃须刀组件无法识别,例如:

@Url.Action

当我添加这个时

<a title="Notifications" href="@Url.Action("_Listing","Home")"> Home </a>

我收到这个错误:

System.MissingMethodException

Method 'RouteCollection.get_AppendTrailingSlash' not found.

System.Web.Mvc 是从包中引用的。还有什么要求吗?

更新: 目前我尝试了这些解决方案:

它似乎是一个 known issue,但我坚信应该有一些 hack 才能起作用。我也尝试使用 aspx 引擎但没有收获。

截至目前,解决此问题的唯一方法是从 GitHub 的源代码构建和安装 Mono。

可以参考Xamarin Bugzilla问题:https://bugzilla.xamarin.com/show_bug.cgi?id=16475#c13

但是,那么,您最终可能会 运行 进入其他领域...。对于 Mono 人员来说,这似乎不是一个高优先级;相反,Xamarin/mobile 故事似乎获得了最多的关注。

The problem now seems to be resolved.

同时,我使用了这个简单的 hack: 我们可以使用基本的 HTML 语法,而不是使用 ASP.NET MVC 助手:

锚类组件:

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

对于类似组件的形式:

    <form action="~/ControllerName/ActionName">
    <br>
    <input type="text" placeholder="Test"/>
    <br>
    <input type="submit" value="Submit"/>
    </form> 

当然,它并没有解决这个错误,但至少它可以在 Mono 上获得 ASP.NET MVC 5 项目 运行。

感谢 @teovankot 指出这一点。

afaik 的最新消息是 Miguel 拒绝了我的 minimal pull request last year,但您可以在该 Pull Request 的底部看到其他一些人已经在 github 上构建,其中包括这个等等。

我看不到有人接受了单声道主线的拉取请求。我能看到的前进方向是,如果你 know/can 说服 Xamarin 团队中的某个人来推动这个。

或者,帮助在单声道上获取现已开源的 .Net 代码 运行。

但是 https://github.com/gentoo/dotnet 看起来很有趣:它拉动了这个和其他一些 MVC5 更改。