Ich bin auf der Suche nach einigen HTML zu einer Webseite mit F #. Irgendwelche Ideen?Einfache .NET Web-Entwicklung mit F #
Antwort
Um ein bestimmtes "HOWTO" zu geben, habe ich versucht, eine einfache ASP.NET MVC-Anwendung zu erstellen, die die wichtigsten Teile in F # implementiert. Wie in der referenzierten Antwort erwähnt, besteht die beste Methode zur Verwendung von F # für die Webentwicklung darin, eine C# -Webanwendung zu erstellen und alle Typen, die das tatsächliche Verhalten implementieren, in eine F # -Bibliothek zu verschieben.
Obwohl es möglich ist, direkt F # Web-Projekt zu erstellen, gibt es viele Einschränkungen (z. B. nicht perfekt Intellisense und möglicherweise andere Probleme), so die aspx
Dateien in C# ist wahrscheinlich eine bessere Idee.
Hier ist, was ich getan habe (Visual Studio 2010):
- Erstellen Sie ein neues C# -Projekt "ASP.NET MVC 2 Web Application". Dies erstellt ein neues C# -Projekt mit einer anfänglichen Vorlage und einigen Seiten. Ich ignoriere die Seite, die Konten behandelt (Sie können es löschen).
- Es gibt
HomeController.cs
Datei inControllers
, die Funktionalität für die Homepage enthält (Laden von Daten usw.) Sie können die Datei löschen - wir werden es in F # neu implementieren. - Fügen Sie neues "F # Library" -Projekt hinzu und fügen Sie Verweise auf ASP.NET MVC-Assemblys hinzu. Es gibt eine Menge von ihnen (siehe das C# -Projekt), aber am wichtigsten ist, dass Sie
System.Web.Mvc.dll
und andere benötigen, auf die von diesem verwiesen wird (der F # -Compiler wird Ihnen sagen, welche Sie benötigen). - Fügen Sie nun den folgenden Code zu
Module1.fs
- das implementiert die ursprünglicheHomeController
, die in C# geschrieben wurde.
Der Quellcode sieht wie folgt aus:
namespace MvcApplication1.Controllers
open System
open System.Web.Mvc
[<HandleError>]
type HomeController() =
inherit Controller()
member x.Index() =
x.ViewData.["Message"] <- "Welcome from F#"
x.View() :> ActionResult
member x.About() : ActionResult =
x.View() :> ActionResult
Das ist einfach eine Re-Implementierung des ursprünglichen C# -Code (eine einzige Klasse erstellen). Ich habe den ursprünglichen C# -Namespace verwendet, damit das MVC-Framework ihn leicht finden kann.
Die Datei Views\Home\Index.aspx
aus dem C# -Projekt definiert die Benutzerschnittstelle und verwendet die Daten, die Sie für das ViewData
-Wörterbuch aus Ihrem F # -Projekt festgelegt haben. Dieses HOWTO zeigt, wie Sie mit F # eine ASP.NET MVC-Anwendung schreiben, aber die Schritte zum Erstellen einer normalen WebForms-Anwendung sind im Wesentlichen die gleichen - erstellen Sie eine C# -Webanwendung und verschieben Sie die implementierenden Klassen in die F # -Bibliothek. Dies wird von der C# -Webanwendung referenziert (die nicht wirklich viel C# -Code enthält).
Danke! Das ist genau das, wonach ich gesucht habe! = D Eine Sache: Ich habe bemerkt, dass dies funktioniert: "Mitglied x.Index() = x.View()" Hinweis der Mangel an Typenannotationen und Gießen. Ist das ok? Es funktioniert gut, aber ich bin neugierig, warum du deine anders gemacht hast. –
@Matt: Wenn es funktioniert, dann nehme ich an, es ist Ok :-). Ich denke, MVC verwendet Reflection intern, daher ist es wahrscheinlich etwas flexibel. Ich habe meine Version anders gemacht, weil ich einfach die C# -Version übersetzt habe (genau so wie sie war, um mögliche Probleme mit verschiedenen Details zu vermeiden). –
Falls jemand in einer ausführlicheren Diskussion interessiert ist, schrieb ich einen Artikel zu diesem Thema:
Der Artikel zeigt eine relativ einfache Web-Anwendung MVC in F # erstellt. Controller und Modell sind in einer separaten F # -Bibliothek implementiert (zusammen mit dem Routen-Mapping). Das Beispiel zeigt auch, wie Sie LINQ from F # für den Datenzugriff verwenden (einschließlich einiger ordentlicher Tricks wie der Zusammensetzung von Zitaten).
- ASP.NET and F# (I.) - Creating MVC web applications in F#
- Visual Studio 2010 Template - Fügt MVC Web Application auf "Neues Projekt"
- 1. Tausendertrennzeichen in .Net/F #
- 2. Nicht-Windows-RAD-Webentwicklung
- 3. Webentwicklung in Common Lisp
- 4. Einfache .NET XML-Bibliothek
- 5. Subversion und Webentwicklung
- 6. F #/.NET Instanz null Kuriosität
- 7. .net MVC Einfache Mitgliedschaftsauthentifizierung mit Datenbank
- 8. Implementierung der Versionskontrolle für Webentwicklung
- 9. Statistische Funktionalitäten von F # (oder .NET Bibliotheken)
- 10. F #, Split String und. NET-Methoden
- 11. .NET von F # lernen ohne C#
- 12. .NET generische Liste in F # -Liste konvertieren
- 13. Wie verteilte Berechnungen mit F # (.Net) ausgeführt werden
- 14. .NET MVC 6 Einfache Authentifizierung ohne Datenbank
- 15. Gibt es eine einfache Java Regex (* SKIP) (* F) Alternative?
- 16. Einfache Peer-to-Peer-Netzwerkbibliothek für .NET
- 17. Welche einfache mathematische Funktion f (x) hat diese Eigenschaften?
- 18. Winforms .Net Einfache Datenbindung funktioniert nicht
- 19. Ein Bild während der Webentwicklung austauschen
- 20. .Net SQL Server Verbindung einfache Klasse mit Verfahren
- 21. .NET einfache Arrays in List Generics konvertieren
- 22. F # und ADO.NET - idiomatische F #
- 23. Wie können mathematische Konzepte mir bei der Webentwicklung helfen?
- 24. einfache Numerologie mit Javascript
- 25. Wie implementiert man die Versionskontrolle für die Webentwicklung am besten?
- 26. F # PowerPack Target Runtime
- 27. F # async Workflow mit Timeout
- 28. F #: Zitat mit Typdefinition?
- 29. Einsteins Rätsellösung mit F #
- 30. F # Funktion mit Parametereinschränkungen
Haben Sie einen Blick auf diese Frage: http: // Stackoverflow.com/questions/1135959/f-und-asp-net –
Wenn Sie nach ASP.NET fragen (ich denke schon, basierend auf den Tags), dann ist es wahrscheinlich ein Duplikat. Es gibt jedoch andere Möglichkeiten zum Generieren von HTML aus F # (z. B. direkt, aber das ist wahrscheinlich nicht das, wonach Sie suchen). –
Alle verwandten Fragen, die ich angeschaut habe, sagen, dass es möglich ist, aber es fehlt jedes Detail, um zu erklären, wie du es tust. –