Asp.net mvc 3 你能在@Helper中使用@Helper吗?

Asp.net mvc 3 你能在@Helper中使用@Helper吗?,asp.net-mvc-3,razor,razor-declarative-helpers,Asp.net Mvc 3,Razor,Razor Declarative Helpers,我不确定这是否可能 在一个视图和其他视图中,我有一堆@Helper: @helper ViewHelper1() { ... } @helper ViewHelper2() { ... } etc. @if (!(Model.Entity == Model.Enum.One)) { <td> @ViewHelper1() </td> } else { &

我不确定这是否可能

在一个视图和其他视图中,我有一堆
@Helper

@helper ViewHelper1()
{
   ...
}
@helper ViewHelper2()
{
   ...
}
etc.
@if (!(Model.Entity == Model.Enum.One))
    {
        <td>
            @ViewHelper1()
        </td>
    }
    else
    { 
        <td>
            @ViewHelper1()
        </td>
        <td>
            @ViewHelper1()
        </td>
    }
我有在视图和其他视图中使用的重复代码:

@helper ViewHelper1()
{
   ...
}
@helper ViewHelper2()
{
   ...
}
etc.
@if (!(Model.Entity == Model.Enum.One))
    {
        <td>
            @ViewHelper1()
        </td>
    }
    else
    { 
        <td>
            @ViewHelper1()
        </td>
        <td>
            @ViewHelper1()
        </td>
    }
或者这是否可能,然后在视图中调用它,如:

@Table(HelperView1)
如果是,我只是需要语法方面的帮助


一如既往,非常感谢。

生成的razor帮助程序只是返回类型为
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)
@helper View1()
{
视图1
}
@辅助视图2()
{
视图2
}
@辅助表(Func viewHelper)
{
viewHelper的重用
@viewHelper()
}
@表(视图1)
@表(视图2)
生成的输出:

Reuslt of viewHelper
<h1>View1</h1>

Reuslt of viewHelper
<h2>View2</h2>
viewHelper的重用
视图1
viewHelper的重用
视图2

谢谢。我试图找出
Func
,但愚蠢地没有意识到我不需要两个参数+后续问题:如果我将
@helper Table(…)
放在
App\u code
中的一个文件中,然后尝试通过
If
语句调用
Model.Entity
,我显然会得到一个“无法对空引用执行运行时绑定”。我明白我为什么会犯这个错误,但是有没有办法避免这个错误呢?还是一种限制?再次感谢。我认为这是将助手放入
App\u code
的一个限制,您可以尝试通过另一个参数将模型传递到
,如
@helper表(动态模型,Func otherHelper)