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)