我可以在编译时不知道websharper模板名称的情况下填充它

时间:2018-10-25 08:08:36

标签: asp.net-core websharper html-templates

我是使用WebSharper的新手,并且在WebSharper 4中陷入了当前困境:

我有以下html模板(some-template.html):

<div class="container">
    <div ws-replace="Content">
    </div>
</div>

它定义了一个名为Content的内容空洞。通常,可以使用以下代码(F#)填充它:

type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">
let doc = SomeTemplate().Content(someElements)

在我的情况下,我在编译时不知道模板的名称和孔。假设我有一个函数:

let buildDom(tempalte : string, holeName : string, content : Doc list) : Doc =
    let template = WebSharper.UI.Template<tempalte> // (1)
    // template.FillHole(holeName, content) (2)

我不知道如何最好地处理(1)-创建模板,以及(2)-定位并填充孔。我想到了反思,但是我想知道是否有一种更优雅,更高效的方法。

一个更笼统的问题-是否有一种很好的方法来动态组成html模板的站点集?这是我正在尝试实现的目标,但是如果做得不好,可能就不需要重新发明轮子了。如果您也能找到此类资源,我将不胜感激。

1 个答案:

答案 0 :(得分:2)

您可以通过将字符串传递给构造函数来传递动态模板:

type SomeTemplate = WebSharper.UI.Templating.Template<"some-template.html">

let doc = SomeTemplate("<div>...</div>").SomeHole("some content").Doc()

,但是仍然根据类型提供程序对孔进行静态键入。当前没有实现动态漏洞的API。

这可能是一个很好的有用的补充;您应该发布建议on github