I am creating an ASP.NET MVC 5 application in Mono (Ubuntu 14.4, Monodevelop 5.9, Mono JIT compiler version 4.0.1).
I see that some of the razor components are not recognized, eg:
@Url.Action
When I add this
<a title="Notifications" href="@Url.Action("_Listing","Home")"> Home </a>
I get this error:
System.MissingMethodException
Method 'RouteCollection.get_AppendTrailingSlash' not found.
System.Web.Mvc
is referenced from the packages. Is there anything else which is required?
Update: I tried these solutions so far:
Does the Razor View Engine work for Mono?
Is it possible to use Razor 2.0 view engine under mono?
http://www.davidloo.com/?p=479
http://iws.io/walkthrough-porting-asp-net-mvc-website-to-mono-2-6-1-and-mysql-on-linux-apache-porting-to-mono-part-3-of-3/
It seems like it is a known issue but I strongly believe there shall be some hack for this to work. I tried using aspx engine also but no gain.
The latest news afaik is that Miguel rejected my minimal pull request last year but you can see at the bottom of that Pull Request that a couple of others have got builds on github which include this and more.
I can't see anyone's got a pull request accepted for mono mainline. The way forward I can see is if you know/can persuade someone on the Xamarin team to push this.
Or, helping with getting the now-open-sourced .Net code running on mono.
But https://github.com/gentoo/dotnet looks interesting: It has pulled this and some other MVC5 changes.
As of right now, the only way to get around this is to build and install Mono from source from GitHub.
You can refer to the Xamarin Bugzilla issue: https://bugzilla.xamarin.com/show_bug.cgi?id=16475#c13
But, then, you might end up running into something else.... This doesn't seem to be a high-priority for the Mono guys; rather, the Xamarin/mobile story seems to gain the most attention.
The problem now seems to be resolved.
Meanwhile, I had used this simple hack: Instead of using ASP.NET MVC helpers, We can use basic HTML syntax like this:
For anchor like components:
<a href="~/ControllerName/ActionName"> Test </a>
For form like components:
<form action="~/ControllerName/ActionName">
<br>
<input type="text" placeholder="Test"/>
<br>
<input type="submit" value="Submit"/>
</form>
Surely, it doesn't solve the bug but at least it can get ASP.NET MVC 5 project running on Mono.
Thanks to @teovankot for pointing this out.