gpt4 book ai didi

c# - MVC3 布局 - 重复部分

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:47 25 4
gpt4 key购买 nike

我想将布局页面的主体分为两部分:实际主体和侧边栏。该侧边栏可以包含 0、1 或更多 <div>将我在 View 中静态定义的控件或数据组合在一起的元素。为了不在每个 View 上重复此 div 结构,我想将其拆分为布局页面上的一个部分。但是,由于一个部分不能在一个 View 上定义多次,所以我不能重复它们。

我可以如下静态定义一些侧边栏部分,但这似乎是一种肮脏的方式:

<div id="sidebar1">
@RenderSection("Sidebar1", false))
</div>
<div id="sidebar2">
@RenderSection("Sidebar2", false))
</div>

有什么方法可以动态定义这种类型的布局吗?

我看到过一些关于模板化 Razor 委托(delegate)的提及,它可以用作将参数封装在 div block 中的函数:

@{ 
Func<dynamic, object> div = @<div class="block">@item</div>;
}
@div("Block 1")
@div("Block 2")

但是这些似乎只接受不是我正在寻找的文本,并且在布局上定义时它们不会被 View 继承。

最佳答案

'Templated Razor Delegates' 不限于只接受 'string'。您可以将委托(delegate)定义为:

在 View 中:

@model IEnumerable<SidebarViewModel>

@{
Func<SidebarViewModel, object> div = @<div class="block">@item.Name</div>;
}

@foreach (var block in Model)
{
@div(block)
}

您将在委托(delegate)中获得完整的智能感知支持。

示例 View 模型:

public class SidebarViewModel
{
public string Name { get; set; }
}

关于c# - MVC3 布局 - 重复部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10296432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com