动态添加HTML到ASP.NET页面

Max*_*ich 16 html c# asp.net declarative

有人可以建议动态地将HTML内容添加到ASP.NET页面的"正确"方法是什么?

我知道以下声明方法.

//Declaration
<%= MyMethodCall() %>


//And in the code behind.
protected String MyMethodCall()
{
    return "Test Value";
}
Run Code Online (Sandbox Code Playgroud)

有更好或最好的练习方式吗?

编辑:我正在根据位于特定文件夹中的图像动态构建Galleriffic照片库.

Dan*_*Dan 29

取决于你想做什么.

对于控件/文本,我通常使用a LiteralControl并将Text属性设置为我想要添加的HTML,然后可以将此控件添加到您希望它出现的页面上的任何位置

LiteralControl参考在 这里

好吧,因为你想要它为Galleriffic,我想它会伪似出现......

 LiteralControl imageGallery = new LiteralControl();
    string divStart = @"<div id='thumbs'><ul class='thumbs noscript'>";
    imageGallery.Text += divStart;
    foreach ([image in images])
    {
      string imageHTML = @"<li><a class='thumb' name='optionalCustomIdentifier' ref='path/to/slide' title='your image title'>
                           <img src='path/to/thumbnail' alt='your image title again for graceful degradation' /></a>
                           <div class='caption'>[caption]<div></li>";

      imageGallery.Text += imageHTML;
    }
    string divEnd = @"</ul></div>";
    imageGallery.Text += divEnd;

    this.[divOnPage].Controls.Add(imageGallery);
Run Code Online (Sandbox Code Playgroud)

  • 这段代码很糟糕.为什么不使用转发器?或.aspx中的for.连接字符串以创建HTML并不是我对最佳实践的想法 (3认同)
  • 在C#代码中组装标记应该是绝对的最后手段,因为它会创建一个让Cthulhu感到自豪的维护噩梦.至少,封装到用户或服务器控件中. (2认同)
  • 是的,就字符串/HTML 连接而言,您是对的,我只是快速地将该示例放在一起来说明这一点 (2认同)

HQt*_*izy 10

Aspx:

<div id="DIV1" runat="server"></div>
Run Code Online (Sandbox Code Playgroud)

代码背后:

DIV1.InnerHtml = "some text";
Run Code Online (Sandbox Code Playgroud)


Jak*_*ade 6

有几种方法可以实现,实际使用取决于您的方案和偏好.

  • Web用户控件:可以动态添加,并获得Visual Studio的完整编辑器支持.
  • XML文字(仅限VB.NET):在代码中快速组合HTML的非常方便的方法.
  • 模板:向解决方案添加纯HTML文档并将其作为资源包含在内.然后,您将获得编辑器支持,并且不会使用HTML源代码混乱您的代码.