为什么不能在 asp 中将图像附加到 div 中?
divHtml.append(img);
为什么我必须使用 div.controls.add(img);
?
为什么我不能向 controls.add 添加一个字符串,像这样说
div.controls.add(img + String.Format("{0}", reader.GetString(0));
? 最初是“一开始”
我有这段代码:
cn.Open();
using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + theUserId + " 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();
}
}
这给了我这个输出(注意应用了 css 并且所有间距等都非常整洁:
然后我做了这段代码:
while (reader.Read())
{
System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
//div.ID = "test";
div.Style["float"] = "left";
Image img = new Image();
img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
img.AlternateText = "Test image";
div.Controls.Add(img);
test1.Controls.Add(div);
System.Web.UI.HtmlControls.HtmlGenericControl div1 = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
//div1.ID = "test";
div1.InnerText = String.Format("{0}", reader.GetString(0));
div1.Style["float"] = "left";
test1.Controls.Add(div1);
System.Web.UI.HtmlControls.HtmlGenericControl div2 = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
//div2.ID = "test";
div2.Style["clear"] = "both";
test1.Controls.Add(div2);
}
}
}
}
这是我的结果,没问题,但如果你仔细注意到每个评论之间没有 css,div 在我的 css 范围之外,我尝试应用注释掉的行,看看它是否有效,但它有点时髦tbh。特别是当你在 Firebug 中看它时:
如果我尝试使用下面提到的方法解析控件,就会发生这种情况:
cn.Open();
using (OdbcCommand cmd = new OdbcCommand("SELECT Wallpostings FROM WallPosting WHERE UserID=" + userId + " ORDER BY idWallPosting DESC", cn))
{
using (OdbcDataReader reader = cmd.ExecuteReader())
{
test1.Controls.Clear();
while (reader.Read())
{
System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
div.ID = "test";
div.Style["float"] = "left";
Image img = new Image();
img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
img.AlternateText = "Test image";
div.Controls.Add(img);
div.Controls.Add(ParseControl(String.Format("{0}", reader.GetString(0)));
test1.Controls.Add(div);
编辑:
using (OdbcDataReader reader = cmd.ExecuteReader())
{
test1.Controls.Clear();
while (reader.Read())
{
System.Web.UI.HtmlControls.HtmlGenericControl div = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
div.Attributes["class"] = "test";
div.Style["float"] = "left";
div.ID = "test";
//div.Style["float"] = "left";
Image img = new Image();
img.ImageUrl = "~/userdata/2/uploadedimage/batman-for-facebook.jpg";
img.AlternateText = "Test image";
div.Controls.Add(img);
div.Controls.Add(ParseControl(String.Format("{0}", reader.GetString(0))));
test1.Controls.Add(div);
Shadow 设法让它工作,我也使用了其他评论的解析。
但是现在问题仍然存在,test1 div 没有随着测试 div 扩展:
<asp:Button ID="Button1" runat="server" Text="Post Message" Width="98px"
onclick="Button1_Click" />
</p>
<p>
</p>
<div id="test1" runat="server" />
//could be this line
</asp:Content>
也可能是
test1.Controls.Add(div);
在我的代码中没有被提取或在正确的括号中? CSS:
div#test1
{
}
div .test
{
width:90%;
z-index:1;
padding:27.5px;
border-top: thin solid #736F6E;
border-bottom: thin solid #736F6E;
color:#ffffff;
margin:0 auto;
white-space: pre;
white-space: pre-wrap;
white-space: pre-line;
word-wrap: break-word;
}
最佳答案
img
属于 System.Web.UI.Control
类型,这是 Controls.Add
接受的类型。特别是,System.Web.UI.Control
与 System.String
不同。
由于 C# 是一种强类型语言,因此接受 System.Web.UI.Control
的方法(如 System.Web.UI.ControlCollection 上的
) 不能接受 Add
System.String
作为参数。
同样,假设divHtml
是一个System.StringBuilder
,System.StringBuilder
上没有Append
方法采用 System.Web.UI.Control
类型,因此尝试将 img
传递给现有的 Append
方法将失败。
(您可能还无法编译代码,因为您没有为方法和属性使用正确的名称;它是 Controls
而不是 controls
,Add
不是 add
,Append
不是 append
。)
关于c# - ASP.NET WebForms 中的字符串与控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419939/