我想将一个模型传递给一个自定义剃刀帮助器,以执行重复的剃刀生成任务。我想要生成的代码将如下所示:
@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更多的Place对象。
那么如何传递Places对象,它可能是一个List<customClass>
,并为每个属性生成代码呢?
发布于 2019-01-19 20:55:02
如何,你命名你的帮助器方法,并把参数模型放在括号里。
@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});
}
//...
}
一个如何使用Render a Razor Page to string的例子。
https://stackoverflow.com/questions/54132814
复制相似问题