我正在尝试在 dotvvm 母版页中渲染类似剃刀的渲染部分。但从文档中什么也没找到,但以下内容:
母版页嵌套
您还可以将母版页嵌套在另一个母版页中,依此类推。只需在母版页中使用 @masterPage 指令来指定父母版页。
基本上我想呈现导航菜单,该菜单将在我的父母版页的另一个母版页中定义。
我认为您正在寻找标记控件,请参阅文档了解更多详细信息:https ://www.dotvvm.com/docs/tutorials/control-development-markup-only-controls/2.0
简而言之,标记控件允许您在 dothtml 文件中声明自定义控件。您可以在标记控件中使用所有 DotVVM 功能,如果您想使用数据绑定,您只需明确声明应如何传递来自视图模型的数据。
一个极简的标记控件可能如下所示:
<!-- The control must be used when data context is this view model: -->
@viewModel Full.Name.Of.MyViewModelBase
<ul class=menu>
<li>{{value: NameOfSomething}}</li>
<li>...</li>
</ul>
然后,必须注册该控件,以便 DotVVM 可以找到它:
// in DotvvmStartup
config.Markup.AddMarkupControl(tagPrefix: "cc", tagName: "MyMenu", "Views/MyMenu.dotcontrol");
之后,您可以在任何您想要的地方使用控件(好吧,递归仅在某些时候有效):
<cc:MyMenu />
您还可以声明属性,然后在控件中使用它。它可能有助于控件的可重用性,因为视图模型不必适合。我会把它留给文档