Tom*_*cek 10
为了给出一些特定的"HOWTO",我尝试创建一个简单的ASP.NET MVC应用程序来实现F#中的关键部分.如引用的答案所述,使用F#进行Web开发的最佳方法是创建C#Web应用程序并将实现实际行为的所有类型移动到F#库.
虽然可以直接创建F#web项目,但是存在许多限制(例如,不完美的intellisense和可能的其他问题),因此aspx在C#中管理文件可能是更好的主意.
这是我做的(使用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
Run Code Online (Sandbox Code Playgroud)
这只是原始C#代码的重新实现(创建单个类).我使用了原始的C#名称空间,因此MVC框架可以轻松找到它.
Views\Home\Index.aspxC#项目中的文件定义了用户界面,并使用您ViewData在F#项目中设置的字典数据.
这个"HOWTO"展示了如何使用F#编写ASP.NET MVC应用程序,但创建普通WebForms应用程序的步骤基本相同 - 创建一个C#Web应用程序并将实现类移动到F#库,这将被引用来自C#Web应用程序(实际上不包含太多C#代码).
如果有人对更详细的讨论感兴趣,我写了一篇关于这个主题的文章:
本文展示了一个用F#创建的相对简单的MVC Web应用程序.控制器和模型在单独的F#库中实现(与路由映射一起).该示例还演示了如何使用F#中的LINQ进行数据访问(包括一些巧妙的技巧,如引用组合).