我有一个名为 EditableArea
的帮助程序,它通过JS向用户提供可在运行时编辑的 div
。 EditableArea 帮助程序检查是否存在具有指定ID的可编辑区域(与 MVC 的 Area
无关),如果存在,则呈现该区域的HTML,否则它会显示帮助程序参数中指定的默认标记:
@Html.EditableArea(someId, "<p>Click to edit contents</p>")
一切都正常工作,但我想将默认的标记语言更改为Razor语法,而不是字符串形式,类似于:
@using (Html.EditableArea(someId))
{
<p>Click to edit contents</p>
}
或者类似于MVC3中的@section
的方式。
我该如何实现这一点?
我可以创建一个IDisposable
,在其中的Dispose()
方法中关闭TagBuilder
等,但使用这种方法,标记仍将被呈现(我可以在Dispose()
中清除呈现的内容,但代码块仍将不必要地运行,我想避免这种情况)。
是否有其他方法将Razor块传递给助手,这些块可能或可能不会实际呈现?
<text>...</text>
语法未被识别(无效的表达式项“<”)。 - Boris B.<text>
标签根本不需要(@
就足够了),除非Razor标记实际上是没有任何标签的纯文本,否则只需使用@<tag>
即可。 - Boris B.<text>
标签的部分是正确的。我倾向于使用它们,以防将来更改模板中的内容 - 未雨绸缪。 - Marek Karbarz