在ASP.NET控制器中生成HTML

时间:2016-04-18 12:12:39

标签: c# html asp.net asp.net-mvc razor

我在一个场景中,我有一堆动态对象。它们使用反射加载,因此无法向视图添加代码,以便能够生成html以正确呈现对象。该怎么做?一个Razor助手似乎很好,但由于我不知道编译时的对象,我真的不能使用它们。

我所做的是创建一个名为Person的基础对象,并在基类中添加了一个名为RenderHTML()的虚方法。

public Medic : Person
public Cop : Person

然后,我将在每个类中重写此RenderHTML方法,该方法将生成将正确显示子类包含的其他内容的HTML。它有效,但它不容易使用。当事情变得复杂时,必须使用单个字符串并添加到它上面会变得非常混乱。

htmlstring += "some more html";

有没有办法设置某种输出缓冲区,我可以这样做。

string html = startBuffer(){

<html>wdfwjewe</html>

}

括号内的内容可能是纯HTML,没有任何花哨的东西可以逃脱它,所有内容都会保存到html字符串中。我正在寻找某种语法高亮,因为我现在的方法变得很麻烦。

1 个答案:

答案 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);
        }