【问题标题】:Adding asp.net image to div将asp.net图像添加到div
【发布时间】:2011-07-21 08:41:10
【问题描述】:

有没有一种方法可以在下面的代码中动态地将 Image1 添加到 while 循环中(包含在 div 中)我的意思是实际上将 asp 图像添加到 div 中?通过代码。目前,当我看到它时,代码会寻找一个 asp 图像,但我没有看到你可以将它“添加”到我的动态内容中:

using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
{
    using (OdbcDataReader reader = cmd.ExecuteReader())
    {
        var divHtml = new System.Text.StringBuilder();
        while (reader.Read())
        {
            divHtml.Append("<div id=test>");
            divHtml.Append(String.Format("{0}", reader.GetString(0)));
            divHtml.Append("</div>");
        }
        test1.InnerHtml = divHtml.ToString();
    }
}

我以为我有这个:

        var divHtml = new System.Text.StringBuilder();
        while (reader.Read())
        {
                    divHtml.Append("<div id=test>");
                    divHtml.Append(String.Format("{0}", reader.GetString(0)));
                    Image img = new Image();
                    img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
                    divHtml.Append(img);
                    divHtml.Append("</div>");
        }
        test1.InnerHtml = divHtml.ToString();

我得到了一个时髦的输出吗?

看图:

我也试过这个:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Data.Odbc;
    using System.Web.UI.WebControls.Image;
    using System.Web.UI.HtmlControls.HtmlGenericControl;
    using System.IO;

    public partial class UserProfileWall : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            string theUserId = Session["UserID"].ToString();
            PopulateWallPosts(theUserId);
        }
        public static string RenderHtmlString(this System.Web.UI.HtmlControls.HtmlGenericControl htmlControl)
        {
            string result = string.Empty;
            using (System.IO.StringWriter sw = new System.IO.StringWriter())
            {
                var writer = new System.Web.UI.HtmlTextWriter(sw);
                htmlControl.RenderControl(writer);
                result = sw.ToString();
                writer.Close();
            }
            return result;
        }
        private void PopulateWallPosts(string userId)
        {
            using (OdbcConnection cn = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver}; Server=localhost; Database=gymwebsite2; User=root; Password=commando;"))
            {
                cn.Open();
                using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
                {
                    using (OdbcDataReader reader = cmd.ExecuteReader())
                    {


                        var divHtml = new System.Text.StringBuilder();
                        while (reader.Read())
                        {
                            using (StringWriter sw = new StringWriter())

                            divHtml.Append("<div id=test>");
                            divHtml.Append(String.Format("{0}", reader.GetString(0)));
                            Image img = new Image();
                            img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
                            divHtml.Append(img.RenderHtmlString());
//this line
                            divHtml.Append("</div>");
                        }
                        test1.InnerHtml = divHtml.ToString();
                    }
                }
            }
        }

但是 RenderHtmlString 没有定义?

【问题讨论】:

  • 是的,你为什么不能呢?您真的应该说出您对此的疑问,以帮助我们更好地与您一起解决它们
  • Garrith:一般来说,您应该使用新信息更新您的原始问题,而不是开始一个全新的问题。请关闭它并更新您在 20 分钟前开始的问题。
  • 不,根本不是重复的?我收到一个答案,你不能通过 css 添加 asp 图像现在我必须找到一条新路线,因此上面的问题!
  • 更新代码的问题是Image.ToString()(你在做什么)返回System.Web.UI.WebControls.Image,所以你得到了预期的结果。您需要将其呈现为文本。请参阅下面的我的答案以获取包含通用方法的链接(您将其放入任何类中,然后调用为img.RenderHtmlString(),这样您就可以使用您所拥有的并将divHtml.Append(img); 更改为divHtml.Append(img.RenderHtmlString());,如果您在其中包含该Generic 方法你的项目。

标签: c# asp.net html css


【解决方案1】:
HtmlGenericControl("div") divHtml = new HtmlGenericControl("div");
divHtml.Controls.Add( HtmlImage image = new HtmlImage{ Src = "pathgoeshere" } );

大概您还需要将其作为字符串返回?如果是这样,试试这个方便的 Generic http://www.refactory.org/s/render_html_string_from_htmlgenericcontrol/view/latest,但要真正按照其他人的建议去做,并充分利用 &lt;asp:PlaceHolder 的力量,只需将此返回的控件添加到占位符的控件集合中即可。

【讨论】:

  • 你到底试过什么?我不知道你做了什么或没做什么。
  • 查看编辑 我试过你的方法了吗?不确定它是否正确。 renderhtmlstring 也没有定义?
  • @Garrith 您是否将我链接到的通用方法添加到您项目中的全局可用类中?在那之前,“RenderHtmlString”将没有定义
【解决方案2】:

不,您不能将服务器控件添加到 DOM 元素的文字表示中。

我不确定“test1”是什么类型的控件,但您应该将其更改为 PlaceHolder 控件并执行以下操作(未经测试!):

 using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
        {
            using (OdbcDataReader reader = cmd.ExecuteReader())
            {
                var divHtml = new System.Text.StringBuilder();
                while (reader.Read())
                {
                    System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                    div.ID = "test";
                    div.InnerHtml = String.Format("{0}", reader.GetString(0));
                    Image img = new Image();
                    img.ImageUrl = "~/images/test.jpg";
                    img.AlternateText = "Test image";
                    div.Controls.Add(img);
                    test1.Controls.Add(div);
                }
                test1.InnerHtml = divHtml.ToString();
            }
        }

希望这会有所帮助!

【讨论】:

  • 我的代码仅供参考,可能需要根据您的具体需要进行修改。在调试模式下单步执行代码以确保您获得结果等,如果您需要特定帮助,可能会发布您的代码。
【解决方案3】:

只是有点担心。您正在动态构建 SQL 字符串。确保清理“userid”变量。

您可以通过这样做来动态创建图像:

System.Web.UI.WebControls.Image img = new Image();
img.ImageUrl = "~/img/image1.jpg";

您是否已经知道要使用的图像?图片或图片源是否位于您的数据库中?

【讨论】:

  • 问题是他不能将新的 WebControl 注入到他的字符串中。如果他使用HtmlGenericControl("div"),他就不会遇到这个问题。
  • url 存储在一个名为 Pictures 的单独表中,colum 是图片路径,这是我的下一个问题,如何将它加入到我的 sql 语法 atm 中,通过 UserID 链接
【解决方案4】:

尝试使用占位符

Image img = new Image(); // instantiating the control
img.ImageUrl = "~/myimage.gif"; // setting the path to the image
placeholderpicture.Controls.Add(img);

来自http://forums.asp.net/t/1308158.aspx/1

【讨论】:

  • 嗯,事情是 div 是动态的,我如何为不存在的东西添加占位符?
  • 这不会将img添加到div中吗?
  • 动态添加 div 到占位符,并将图像添加到 div 中?不知道我是否理解这个问题。
  • 占位符是否进入 div 内?
  • 看看我在我的帖子中的img,你会看到它是什么样子的,用户发布了一些插入到mysql数据库中的内容,然后重新加载到同一页面上,该页面被放入名为=的div中这些测试 div 驻留在 test1 div 下的测试,我必须找到一种方法将每个图像添加到每个 div=test
猜你喜欢
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-28
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多