在ASP.NET Core MVC 3中向部分视图传递内部HTML

3

我相信这个问题已经被问过了,但不知道如何正确表达。我想做类似于以下的事情:

MyView.cshtml:

<partial name="_MyPartial">
    <span>some content</div>
</partial>

_MyPartial.cshtml:

<div class="partial">
    @RenderInnerHtml()
</div>

结果如下:

<div class="partial">
    <span>some content</div>
</div>

这是可能的吗?如果无法使用部分视图,那么也许可以使用视图组件?


2
部分视图和视图组件不支持子内容。您可能希望查看Razor组件,而不是使用它们:https://www.mikesdotnetting.com/article/338/using-razor-components-in-a-razor-page。它们支持子内容。 - undefined
1个回答

0
对于aspnet core razor,请查看“Templated Razor delegates” documentation
使用这些,您可以使用以下语法创建razor模板:
Func<T, object> template = @<div>@item.Foo</div>;

(其中 T 是您的类型)。
然后,您可以将该函数传递给其他地方(例如部分视图),并按如下方式调用:
@template(new T { Foo = "Bar" })

请注意,通过@item访问传入的参数。(我的VS会对此添加一个红色波浪线,但可以忽略!)
如果您不想要一个强类型模板,只需将T更改为dynamic。
针对您特定的用例:
@{
    var template = @<span>some content</span>;
}

<partial name="_MyPartial" model="template" />

然后,在_MyPartial内部:
@Model(null)

显然,你可以为这个部分引入多个模板和强类型模型。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接