我在一个场景中,我有一堆动态对象。它们使用反射加载,因此无法向视图添加代码,以便能够生成html以正确呈现对象。该怎么做?一个Razor助手似乎很好,但由于我不知道编译时的对象,我真的不能使用它们。
我所做的是创建一个名为Person的基础对象,并在基类中添加了一个名为RenderHTML()的虚方法。
public Medic : Person
public Cop : Person
然后,我将在每个类中重写此RenderHTML方法,该方法将生成将正确显示子类包含的其他内容的HTML。它有效,但它不容易使用。当事情变得复杂时,必须使用单个字符串并添加到它上面会变得非常混乱。
htmlstring += "some more html";
有没有办法设置某种输出缓冲区,我可以这样做。
string html = startBuffer(){
<html>wdfwjewe</html>
}
括号内的内容可能是纯HTML,没有任何花哨的东西可以逃脱它,所有内容都会保存到html字符串中。我正在寻找某种语法高亮,因为我现在的方法变得很麻烦。
答案 0 :(得分:1)
您可以尝试使用TagBuilder()
如果您开始从<html>
构建html,这确实涉及标记的嵌套。替代方案是StringBuilder()
示例来自documentation
public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
// Create tag builder
var builder = new TagBuilder("img");
// Create valid id
builder.GenerateId(id);
// Add attributes
builder.MergeAttribute("src", url);
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
// Render tag
return builder.ToString(TagRenderMode.SelfClosing);
}