【发布时间】:2020-01-01 10:33:50
【问题描述】:
我正在尝试在 dotvvm 母版页中渲染类似 razor 的部分渲染。但从文档中什么也没找到,但以下内容:
母版页嵌套
您还可以将母版页嵌套在另一个母版页中,依此类推。只需在母版页中使用@masterPage 指令来指定父母版页。
基本上我想呈现导航菜单,该菜单将在我的父母版页的另一个母版页中定义。
【问题讨论】:
我正在尝试在 dotvvm 母版页中渲染类似 razor 的部分渲染。但从文档中什么也没找到,但以下内容:
母版页嵌套
您还可以将母版页嵌套在另一个母版页中,依此类推。只需在母版页中使用@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>
那么,控件必须是registered,这样DotVVM才能找到它:
// in DotvvmStartup
config.Markup.AddMarkupControl(tagPrefix: "cc", tagName: "MyMenu", "Views/MyMenu.dotcontrol");
之后,你可以在任何你想要的地方使用控件(好吧,递归只在某些时候起作用?):
<cc:MyMenu />
您还可以声明属性,然后在控件中使用它。它可能有助于控件的可重用性,因为视图模型不必适合。我会把它留给docs
【讨论】: