您如何将 Websharper 与现有的 ASP.NET MVC 项目集成?

How do you integrate Websharper with an existing ASP.NET MVC project?

Websharper 网站 has a tutorial 关于 ASP.NET 与 Websharper 的集成,但在某些方面含糊不清。我已经在我的 ASP.NET MVC 项目上安装了 Websharper 包,并按照说明的第 1 步进行操作,但我对其余部分感到困惑。

对于第 2 步,在哪里或如何添加我想要集成的 Websharper 应用程序?我是否只在脚本文件夹中添加 F# 源文件并让它自动生成我需要的 Javascript?或者我是否让它在单独的 Websharper 项目中编译并将生成的 Javascript 添加到 ASP.NET MVC 项目中?

在标题中,它专门说了与 ASPX 页面的集成。这是否意味着这不适用于 Razor 网页,这是 ASP.NET MVC 的默认设置?

使用当前发布的 WebSharper 确实不容易在 Razor 页面中插入 WebSharper 控件,但我们正在开发帮助程序来促进这一点,很快就会发布。正在进行的工作可用 here。它依赖于最新的 WebSharper,因此如果您想立即使用它,您需要从源代码构建两者。

接下来您需要执行以下操作(在我们发布 WebSharper.AspNetMvc 之前可能会稍作更改):

  • 从您的 Web 项目中引用 WebSharper,WebSharper.AspNetMvc 和您的 WebSharper 项目。
  • 如果您使用 RPC and/or Sitelets:

    • 将相关模块添加到您的 Web.config,如您链接的文档中所示;
    • 添加到您的FilterConfig.RegisterGlobalFilters:

      filters.Add(new WebSharper.AspNetMvc.Filter());
      
  • 要使用客户端控件:

    • 在您的主要剃须刀布局中,在 head 标签内添加以下内容:

      @WebSharper.AspNetMvc.ScriptManager.Head()
      

      这将包含您的控件所需的 css 和 javascript 标记。

    • 要在视图中插入控件,首先在视图的顶部创建它:

      @{
          var myControl = WebSharper.AspNetMvc.ScriptManager.Register(new MyControl());
      }
      

      然后就可以在视图中插入了,eg:

      <div>
          <h1>My control:</h1>
          @myControl
      </div>
      

      在视图开始呈现之前创建控件很重要,否则 ScriptManager.Head() 已经在没有此控件依赖项的情况下呈现。