为什么一个Razor助手会召唤另一个助手?

时间:2015-07-08 12:27:22

标签: asp.net-mvc asp.net-mvc-4 razor

我在.cshtml文件中运行下面的剃刀代码(它是我需要实现的更复杂的简化版本),但renderTestB助手似乎没有执行

@renderTestA("test string 1", "test string 2");

@helper renderTestA(string input1, string input2)
{
    <div>
        @renderTestB(input1)
        @renderTestB(input2)
    </div>
}

@helper renderTestB(string input)
{
    <p class="test">@input</p>
}

这是为什么?还有另一种方法可以实现我想要做的事情吗?

我意识到我可以在renderTestA帮助器中复制段落代码,但显然更喜欢可重用的代码解决方案。

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

@renderTestA(renderTestB("test string 1"), renderTestB("test string 2"))

@helper renderTestA(string input1, string input2)
{
    <div>
        @input1
        @input2
    </div>
}

@helper renderTestB(string input)
{
    <p class="test">@input</p>
}

您应该考虑使用编辑/显示模板或自定义HTML帮助程序,因为在这些功能成为常态之前使用了@helper功能。

至于为什么你不能嵌套它们。它引入了一些使用上面建议的语法可以轻松避免的问题。例如......如果你有一个循环的嵌套助手循环,它很容易导致堆栈溢出。