C# 在asp.net中使用添加html元素

C# 在asp.net中使用添加html元素,c#,asp.net,C#,Asp.net,我需要一些人帮我弄清楚怎么做 我得到了这个图库(Gallerific)和一些存储在Flicker.com中的图像,所以我使用Flicker api获取图像,但仍然手动添加它们来测试图库 现在,我正在寻找一种好方法,在使用flicketapi获取图像后,将其插入html 我找到了这个并使用了这个函数 Response.Write(GetDivElements()) 但这是在html的顶部添加div,而不是在body标记中 我的问题是: HtmlTextWriter=newhtmltextwrite

我需要一些人帮我弄清楚怎么做

我得到了这个图库(Gallerific)和一些存储在Flicker.com中的图像,所以我使用Flicker api获取图像,但仍然手动添加它们来测试图库

现在,我正在寻找一种好方法,在使用flicketapi获取图像后,将其插入html

我找到了这个并使用了这个函数

Response.Write(GetDivElements())

但这是在html的顶部添加div,而不是在body标记中

我的问题是:

  • HtmlTextWriter=newhtmltextwriter(stringWriter)
    是在服务器端构建html标记的好方法吗

  • 除了
    Response.Write(“”)之外,还有更好的方法向html添加元素吗


  • 如果您使用的是旧样式的asp.net,而不是asp.net MVC,那么您可以创建一个id为runat=“server”的div。然后您可以直接写入html

    aspx页

    <div id = "DivINeedToAddStuffTo" runat="server" />
    

    此外,我认为使用HtmlTextWriter创建Html标记没有任何问题,您可以尝试查看。这样,您可以创建图像控件的实例,然后将其添加到占位符中

    Image myImg = new Image(); 
    myImg.ImageUrl = "MyPicture.jpg"; 
    myPlaceholder.Controls.Add(myImg);
    

    下面是我需要加成时所做的

    在我的页面中

    <asp:PlaceHolder ID="MyPlaceholder" runat="server"></asp:PlaceHolder>
    
    
    
    在我的代码背后

    MyPlaceholder.Controls.Add(new Literal() { Text="<div>some markup</div>"});
    
    添加(new Literal(){Text=“some markup”});
    我这样做是因为:

    1) 您可以将占位符放在页面结构中所需的位置


    2) 通过在运行时向控件集合添加文字,可以防止ViewState因其内容而膨胀。

    您应该能够使用ASP文字控件:

            foreach (var item in items)
            {
                Literal literal = new Literal();
                literal.text = item.html; //Assuming the item contains the html.
                MyPlaceholder.Controls.Add(literal);
            }
    
    您可以在呈现页面之前获得该代码

    希望有帮助

    保罗

    编辑


    对不起,我想我弄错了,我以为你有带图像链接的html,而不是实际图像本身,如果是这样的话,贾斯汀的答案会适合你。

    是的,我测试了它,我想要的是谢谢:)@samy,是的,它可以工作,但请检查你的视图状态。它包含div的内容。您已经有效地添加了两次标记。如果您想避免页面变大,请检查下面的答案。我不久前读到,可以将视图状态保存在不同的文件或数据库中吗?这种技术对大视图状态有帮助吗?据我所知,只有SessionState才有可能。ViewState包含页面控件的属性值。它在页面级别充当持久性介质。虽然有一半的时间它被垃圾弄得臃肿不堪。你必须非常小心,我看到的页面仅ViewState就有200000多个。有一些好的网站(例如)可以显示ViewState的内容。值得一看。
        var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" };
        ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;";
    
        ctrl.Controls.Add(new Image
        {
            ImageUrl =
            Page.ResolveUrl("image path here")
        });
    
        this.Controls.Add(ctrl);
    
        var ctrl = new WebControl(HtmlTextWriterTag.Div) { CssClass = "SomeClass" };
        ctrl.Attributes["style"] = "float:left;display:inline-block;margin:3px;";
    
        ctrl.Controls.Add(new Image
        {
            ImageUrl =
            Page.ResolveUrl("image path here")
        });
    
        this.Controls.Add(ctrl);