【问题标题】:Referencing partial view or another master page inside dotvvm masterpage在 dotvvm masterpage 中引用部分视图或其他母版页
【发布时间】:2020-01-01 10:33:50
【问题描述】:

我正在尝试在 dotvvm 母版页中渲染类似 razor 的部分渲染。但从文档中什么也没找到,但以下内容:

母版页嵌套

您还可以将母版页嵌套在另一个母版页中,依此类推。只需在母版页中使用@masterPage 指令来指定父母版页。

基本上我想呈现导航菜单,该菜单将在我的父母版页的另一个母版页中定义。

【问题讨论】:

    标签: c# asp.net dotvvm


    【解决方案1】:

    我认为您正在寻找标记控件,请参阅文档了解更多详细信息: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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2012-06-20
      • 2011-09-26
      相关资源
      最近更新 更多