如何将模型传递给剃须刀页面自定义助手

时间:2019-01-10 16:17:22

标签: html-helper razor-pages

我想将模型传递给自定义剃刀助手,以执行重复的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>)并为每个属性生成代码?

1 个答案:

答案 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});
    }
    //...
}

如何Render a Razor Page to string的示例。