我想将模型传递给自定义 Razor 帮助程序以执行重复的 Razor 生成任务。 我想要生成的代码如下所示:
@foreach (Place P in Model.Places)
{
<div class="col-md-4 clsBorder">
@if (P.prop1 != null && P.prop1 != "")
{<div class="row ">
<div class="col-6">
@Html.DisplayNameFor(model => P.prop1 )
</div>
<div class="col-6">
@Html.DisplayFor(model => P.prop1 )
</div>
</div>}
@if (P.prop2 != null && P.prop2 != "")
{<div class="row">
<div class="col-6">
@Html.DisplayNameFor(model => P.prop2)
</div><div class="col-6">
@Html.DisplayFor(model => P.prop2)
</div>
</div>}
</div>
}
显然,Model.Places
中可能有超过 2 个 Place 对象,每个 Place 对象中可能有多个 prop1 和 prop2。
那么如何传递 Places 对象(可能是List<customClass>
),并为每个属性生成代码呢?
怎么样,你命名你的帮助程序方法,并在参数模型两边加上括号。
@Util.MyUtilMethod(Model.Places)
假设帮助程序方法调用将模板呈现为字符串的服务
public static class Util
{
//...
public async string MyUtilMethod(List<customClass> places)
{
return await this._viewRenderService.RenderToStringAsync(
"blahContext/blahAction",
new blahContext.blahModel { Places = places});
}
//...
}
如何将 Razor 页面呈现为字符串的示例。