3

我不确定这是可能的。

@Helper我在一个视图和其他视图中有一堆's:

@helper ViewHelper1()
{
   ...
}
@helper ViewHelper2()
{
   ...
}
etc.

我有在视图和其他视图中使用的重复代码:

@if (!(Model.Entity == Model.Enum.One))
    {
        <td>
            @ViewHelper1()
        </td>
    }
    else
    { 
        <td>
            @ViewHelper1()
        </td>
        <td>
            @ViewHelper1()
        </td>
    }

实际@ViewHelper1有更复杂的代码,但这并不重要(我认为)。

好吧,由于每个视图都有许多@Helper's (30+ 个视图,每个 10-15@Helper个)并且<table>结构是相同的,我想知道如何去创建一个封装结构然后传递视图的@Helperin .App_Code<td>@Helper

说:

@helper Table(...) 
    {
        ...
    }

或者这是否可能,然后在视图中调用它,例如:

@Table(HelperView1)

如果是我只需要语法方面的帮助。

一如既往,非常感谢。

4

1 回答 1

2

生成的剃刀助手只是返回类型的函数HelperResult。您可以HelperResult在主助手中拥有作为参数返回的委托,并在适当的位置调用它们。

一个小样本可以帮助您入门:

@helper View1()
{
    <h1>View1</h1>
}

@helper View2()
{
    <h2>View2</h2>
}

@helper Table(Func<HelperResult> viewHelper)
{
    <text>Reuslt of viewHelper</text>
    @viewHelper()
}

@Table(View1)
@Table(View2)

生成的输出:

Reuslt of viewHelper
<h1>View1</h1>

Reuslt of viewHelper
<h2>View2</h2>
于 2012-05-09T20:58:51.930 回答