【发布时间】:2016-04-18 12:12:39
【问题描述】:
我在一个场景中,我有一堆动态对象。它们是使用反射加载的,因此无法将代码添加到能够生成 html 以正确呈现对象的视图中。这应该怎么做? Razor 助手看起来不错,但由于我不知道编译时的对象,所以我不能真正使用这些。
我所做的是创建了一个名为 Person 的基础对象,并在基础类中添加了一个名为 RenderHTML() 的虚拟方法。
public Medic : Person
public Cop : Person
然后,我将在每个将生成 HTML 的类中重写此 RenderHTML 方法,该 HTML 将正确显示子类包含的附加内容。它有效,但使用起来并不容易。当事情变得复杂时,必须使用单个字符串并添加到它会变得非常混乱。
htmlstring += "some more html";
有没有办法设置某种输出缓冲区,我可以在其中执行类似的操作。
string html = startBuffer(){
<html>wdfwjewe</html>
}
括号内的内容可以是纯 HTML,没有任何想转义的内容,所有内容都将保存到 html 字符串中。我正在寻找某种语法突出显示,因为我目前使用的方法正在变得难以使用。
【问题讨论】:
-
如果 HTML 是“干净的”,您可以使用
XDocument对象而不是直接使用字符串。 -
为什么不让 MVC 为您处理视图生成?为每种类型创建一个局部视图,例如
~/Views/Shared/DisplayTemplates/Cop.cshtml然后从您的主视图中引用部分视图并传入您的对象,例如@Html.DisplayFor(Model.PersonObject)或者,如果您必须在服务器端代码中将部分作为 HTML 字符串,请使用将视图+视图模型呈现为字符串的技术之一。询问您是否需要推荐。
标签: c# html asp.net asp.net-mvc razor