我想将模型传递给自定义剃刀助手,以执行重复的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>
)并为每个属性生成代码?
答案 0 :(得分:0)
怎么样,命名您的辅助方法,并在参数模型周围加上括号。
@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});
}
//...
}