我正在寻找使用F#将一些HTML输出到网页。有任何想法吗?使用F#进行简单的.NET Web开发#
回答
为了给出一些具体的“HOWTO”,我尝试创建一个简单的ASP.NET MVC应用程序,它在F#中实现了关键部分。正如在引用的答案中指出的那样,使用F#进行Web开发的最佳方式是创建一个C#Web应用程序,并将实现实际行为的所有类型移至F#库。尽管有可能直接创建F#web项目,但有很多限制(例如,不完美的智能感知和其他可能的问题),所以在C#中管理aspx
文件可能是一个更好的主意。
这里是我做的(使用Visual Studio 2010):
- 创建一个新的C#项目 “ASP.NET MVC 2 Web应用程序”。这将创建一个带有一些初始模板和几页的新C#项目。我会忽略处理帐户的页面(您可以删除它)。
Controllers
中有HomeController.cs
文件,其中包含主页的功能(加载数据等)。您可以删除文件 - 我们将在F#中重新实现它。- 添加新的“F#库”项目并添加对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#代码)。
谢谢!这正是我之后的事情! = d 一件事:我注意到,这个工程: “成员x.Index()= x.View()” 注缺乏类型注释和铸造的。这个可以吗?它工作正常,但我很好奇,为什么你做了不同的事情。 – 2010-05-02 21:59:42
@Matt:如果它有效,那么我认为它是正确的:-)。我认为MVC在内部使用Reflection,所以它可能有点灵活。我以不同的方式做了我的版本,因为我只是翻译了C#版本(就像它一样,以避免可能出现的各种细节问题)。 – 2010-05-02 22:17:22
如果有人有兴趣在一个更详细的讨论,我写了一篇关于这个主题的文章:
文章显示了F#创建了一个相对简单的MVC Web应用程序。控制器和模型在单独的F#库中实现(与路由映射一起)。该示例还演示了如何使用F#中的LINQ进行数据访问(包括一些整洁的技巧,例如引用的组合)。
- ASP.NET and F# (I.) - Creating MVC web applications in F#
- Visual Studio 2010 Template - 添加MVC Web应用程序,以 “新项目”
- 1. F#web开发
- 2. 从.Net Web开发到Java Web开发
- 3. 今天开始用MVC4 Web Api进行开发,使用Beta?
- 4. 使用RhinoMocks进行简单嘲弄的问题.NET
- 5. 如何在vim中使用缩进进行Web开发?
- 6. 使用Eclipse进行.NET开发是否可行?
- 7. 使用Mac进行开发
- 8. 使用C#.NET进行网络开发的好处
- 9. 简单的Web使用Python
- 10. 使用虚拟化技术进行Web开发的优势
- 11. 使用虚拟PC进行与Oracle的Web开发
- 12. 在Eclipse中使用HTTPS进行Web应用程序开发
- 13. “使用Rails进行敏捷web开发”一书:未应用CSS
- 14. 使用SQLAlchemy进行简单验证
- 15. Java Web服务开发 - 用于简单安装的库?
- 16. 使用SELECT进行简单BOOLEAN评估
- 17. 使用SQL Server Express进行开发并使用SQL Server 2008进行开发?
- 18. 针对Web服务进行开发
- 19. 开源在Windows中使用C++进行简单语音识别
- 20. 为什么不使用C编程语言进行Web开发
- 21. 使用Web开发进行版本控制
- 22. 使用Dalvik VM On服务器进行Web开发?
- 23. 使用Ruby on Rails进行语义Web开发
- 24. 如何使用Git存储库进行Web开发(和部署)?
- 25. 是否值得学习使用Emacs进行Web开发
- 26. 我可以使用spring liferay进行移动web开发
- 27. 我应该使用多少Silverlight进行Web开发?
- 28. 使用Rails进行敏捷Web开发 - ActiveRecord :: StatementInvalid错误
- 29. 使用Emacs进行Web开发? (Php/mysql/javascript/css/html
- 30. 哪个Eclipse发行版适合使用Python,PHP或Perl进行Web开发?
看一看这个问题:HTTP://计算器。com/questions/1135959/f-and-asp-net – 2010-05-02 20:01:31
如果你问的是关于ASP.NET(我认为是这样,基于标签),那么它可能是重复的。但是,还有其他方法可以从F#生成HTML(例如,直接进行,但这可能不是您要做的)。 – 2010-05-02 20:13:48
我所看到的所有相关问题都表明这是可能的,但在解释实际操作中缺乏细节。 – 2010-05-02 20:27:12