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

时间:2015-05-14 05:06:21

标签: asp.net-mvc websharper

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的默认设置?

1 个答案:

答案 0 :(得分:4)

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

以下是您需要做的事情(在我们发布WebSharper.AspNetMvc之前需要稍作修改):

  • 从您的网络项目中引用WebSharper,WebSharper.AspNetMvc和您的WebSharper项目。
  • 如果您使用RPC和/或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());
      }
      

      然后你可以在视图中插入它,例如:

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

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