我希望使用F#将一些HTML输出到网页。有什么想法吗?
答案 0 :(得分:10)
为了给出一些特定的“HOWTO”,我尝试创建一个简单的ASP.NET MVC应用程序来实现F#中的关键部分。如引用的答案所述,使用F#进行Web开发的最佳方法是创建C#Web应用程序并将实现实际行为的所有类型移动到F#库。
虽然可以直接创建F#web项目,但是存在许多限制(例如,不完美的智能感知和其他可能的问题),因此在C#中管理aspx
文件可能是个更好的主意。
以下是我所做的(使用Visual Studio 2010):
HomeController.cs
中有Controllers
个文件,其中包含主页的功能(加载数据等)。您可以删除该文件 - 我们将在F#中重新实现它。System.Web.Mvc.dll
和其他引用的(F#编译器会告诉你你需要哪些)。Module1.fs
- 这会实现原来的HomeController
,以前是用C#编写的。源代码如下所示:
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
这只是原始C#代码的重新实现(创建单个类)。我使用了原始的C#名称空间,因此MVC框架可以很容易地找到它。
C#项目中的文件Views\Home\Index.aspx
定义了用户界面,并使用您在F#项目中设置的ViewData
字典数据。
这个“HOWTO”展示了如何使用F#编写ASP.NET MVC应用程序,但创建普通WebForms应用程序的步骤基本相同 - 创建一个C#Web应用程序并将实现类移动到F#库,将从C#Web应用程序(实际上不包含很多C#代码)中引用。
答案 1 :(得分:9)
如果有人对更详细的讨论感兴趣,我写了一篇关于这个主题的文章:
本文展示了一个用F#创建的相对简单的MVC Web应用程序。控制器和模型在单独的F#库中实现(与路由映射一起)。该示例还演示了如何使用F#中的LINQ进行数据访问(包括一些巧妙的技巧,如引用组合)。