使用F#进行简单的.NET Web开发

时间:2010-05-02 19:53:49

标签: .net asp.net f#

我希望使用F#将一些HTML输出到网页。有什么想法吗?

2 个答案:

答案 0 :(得分:10)

为了给出一些特定的“HOWTO”,我尝试创建一个简单的ASP.NET MVC应用程序来实现F#中的关键部分。如引用的答案所述,使用F#进行Web开发的最佳方法是创建C#Web应用程序并将实现实际行为的所有类型移动到F#库。

虽然可以直接创建F#web项目,但是存在许多限制(例如,不完美的智能感知和其他可能的问题),因此在C#中管理aspx文件可能是个更好的主意。

以下是我所做的(使用Visual Studio 2010):

  • 创建一个新的C#项目“ASP.NET MVC 2 Web应用程序”。这将创建一个带有一些初始模板和几页的新C#项目。我将忽略处理帐户的页面(您可以删除它)。
  • HomeController.cs中有Controllers个文件,其中包含主页的功能(加载数据等)。您可以删除该文件 - 我们将在F#中重新实现它。
  • 添加新的“F#Library”项目并添加对ASP.NET MVC程序集的引用。它们中有很多(参见C#项目),但最重要的是,你需要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进行数据访问(包括一些巧妙的技巧,如引用组合)。