gpt4 book ai didi

asp.net-mvc - 如何将 HTML 内容传递给 MVC-Razor 中的部分 View ,如 "for" block

转载 作者:行者123 更新时间:2023-12-03 23:23:33 25 4
gpt4 key购买 nike

我在我的应用程序中使用 Chromatron 主题作为管理面板。有一个带有 HTML 内容的侧边栏小工具,通过一点 CSS 技巧,它可以显示完全不同的内容。

<section class="sidebar nested">
<h2>Nested Section</h2>
<p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p>
<p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p>
</section>

我想要一个像这样使用的部分 View :
@Html.Partial("Path/To/Partial/View"){
<h2>Nested Section</h2>
<p>Lorem ipsum dolor sit amet, conse ctetur adipiscing elit. Maec enas id augue ac metu aliquam.</p>
<p>Sed pharetra placerat est suscipit sagittis. Phasellus <a href="#">aliquam</a> males uada blandit. Donec adipiscing sem erat.</p>
}

TBH,我想要拥有 @for(...){ } 中的功能堵塞。
这在 Razor 中可行吗?

最佳答案

我也有同样的困境。尝试使用 Func 属性创建 View 模型类型,然后将 html 作为委托(delegate)传递。

public class ContainerViewModel
{
public String Caption { get; set; }
public String Name { get; set; }
public Int32 Width { get; set; }
public Func<object, IHtmlString> Content { get; set; }
}

@Html.Partial("Container", new ContainerViewModel()
{
Name = "test",
Caption = "Test container",
Content =
@<text>
<h1>Hello World</h1>
</text>,
Width = 600
})

你可以在你的部分中这样称呼它。
@Model.Content(null)

如果您想花哨,可以添加此扩展方法。
public static class PartialExtensions
{
public static IHtmlString Display<T>
(this T model, Expression<Func<T, Func<Object, IHtmlString>>> content)
{
var compiled = content.Compile();
return compiled.Invoke(model).Invoke(null);
}
}

然后,任何时候你使用这个模式,你都可以在你的部分(未完全测试)中这样调用它。
@model ContainerViewModel
@Model.Display(m => m.Content) // Use delegate property

希望这对你有用。

它之所以有效,是因为 @... 语法为您创建了一个小 HtmlHelper,它使用一个模型(您在此处声明为类型 object ,并为 null 传递),并返回一个 IHtmlString .

如果在内容中使用了@Html.BeginForm,请注意表单值似乎不会发布到服务器。

因此,将表单包裹在容器周围。

关于asp.net-mvc - 如何将 HTML 内容传递给 MVC-Razor 中的部分 View ,如 "for" block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9588695/

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