asp.net-mvc - Razor @helper函数不呈现任何HTML

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

我有一个带有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上放置一个断点时,我可以看到调试器移到了正确的帮助器上,但是它会立即跳到函数末尾,然后退出开关,什么都不会呈现。

您对我在这里做错的任何想法吗?

最佳答案

要使用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;
}

基本上是@在 Razor 中所做的。

关于asp.net-mvc - Razor @helper函数不呈现任何HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17950180/

相关文章:

javascript - 选择下拉菜单时重定向到不同的 View ,然后单击按钮

c# - PagedList MVC 不包含 PagedListPager 的定义

css - Razor + Html.Raw() 带有空格?

javascript - 将模型转换为 JSON 并将其传递给 JavaScript setOnLoadCallBack

asp.net-mvc - 在 ASP.NET session 中存储任何内容会导致 500 毫秒的延迟

asp.net-mvc - CSS 未应用于 jQuery UI 对话框

c# - 如何摆脱 Web.config 中的单元测试遗留问题?

jquery - ASP.NET MVC - DropDownList 更改时刷新部分 View

c# - 如何在模型类上添加与数据库无关的属性?

asp.net-mvc - 如何忽略来自父框的CSS样式?