我有一个具有object
属性和值类型ID号的模型,并希望根据值类型编号创建不同的编辑器控件。
我正在尝试使用@help
razor构造,但是没有任何帮助内容呈现给页面。
@helper noEditor()
{
<div>noEditor</div>
}
@helper stringEditor()
{
<div>stringEditor</div>
}
@helper intEditor()
{
<div>intEditor</div>
}
@helper boolEditor()
{
<div>boolEditor</div>
}
@helper collectionEditor()
{
<div>collectionEditor</div>
}
@switch(Model.ValueTypeId)
{
case 1: stringEditor(); break;
case 2: intEditor(); break;
case 3: boolEditor(); break;
case 4: collectionEditor(); break;
default: noEditor(); break;
}
当我在@switch
上设置断点时,我可以看到调试器移动到正确的帮助器,但它会立即跳到函数的末尾,然后退出交换机,不会呈现任何内容。
我在这里做错了什么?
答案 0 :(得分:19)
要使用Razor渲染文本,您必须使用@符号。如果您将代码更改为
@switch(Model.ValueTypeId)
{
case 1: @stringEditor() break;
case 2: @intEditor() break;
case 3: @boolEditor() break;
case 4: @collectionEditor() break;
default: @noEditor() break;
}
它应该有用。
替代方案,您可以像这样使用Response.Write
:
@switch(Model.ValueTypeId)
{
case 1: Response.Write(stringEditor()); break;
case 2: Response.Write(intEditor()); break;
case 3: Response.Write(boolEditor()); break;
case 4: Response.Write(collectionEditor()); break;
default: Response.Write(noEditor()); break;
}
基本上是@
在剃须刀中的作用。