我在后面的代码中渲染asp:image时遇到问题。
首先我解释一下我的方法:
在Default.aspx
我只使用一个标签。
在后面的代码中,我创建一个字符串变量并填充它,然后我用我的字符串变量填充lable.Text
这是我的Default.aspx
:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="test_Default2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
这是我在Defaul.aspx.cs中的表单加载函数:
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = @"<asp:Image ID='Image1' runat='server' ImageUrl='~/images/sc/tiraje.jpg' />
<br/>
<img src='../images/sc/tiraje.jpg' />
";
}
现在这段代码必须呈现两个图像。但是asp:image使用的第一个图像不起作用!我需要在我的字符串变量中使用asp:image,因为我的URL会更改我的结果,例如,如果我的URL是:
http://localhost:19551/website/test/Default.aspx
当我给它一个“/”时:
http://localhost:19551/website/test/Default.aspx/
第二个URL导致我在<img>
标签中使用的字符串中更改第二个图像的src。所以我想使用asp:image,因为它使用“〜/”表示src(imageUrl),它永远不会被更改URL更改!
答案 0 :(得分:1)
Abdullah ELEN介绍的Literal控制是最简单的,它的工作原理。像这样:
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
然后在后面的代码中,假设您已经将图像源捕获到局部变量(photo_src)中,则添加以下内容:
Literal1.Text += "<img src=" + '"' + photo_src + '"' + "/>";
答案 1 :(得分:0)
您不应该使用标签来渲染图像。而是在Web表单中放置两个asp:image控件或使用占位符控件,例如:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Application.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Image runat="server" ID="Image1" />
<br />
<asp:PlaceHolder runat="server" ID="PlaceHolder1"></asp:PlaceHolder>
</div>
</form>
</body>
</html>
然后,您可以动态创建新的图像控件,并使用其ImageUrl属性通过代码隐藏设置图像URL:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Image1.ImageUrl = "../images/sc/tiraje.jpg";
Image Image2 = new Image();
Image2.ImageUrl = "../images/sc/tiraje.jpg";
PlaceHolder1.Controls.Add(Image2);
}
}
答案 2 :(得分:0)
您无法以这种方式创建,因为Asp:Image
是服务器对象。我已经为你准备了一个简单的例子。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="pageDefault" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Literal ID="literalControl" runat="server" />
</div>
</form>
</body>
</html>
代码隐藏
protected void Page_Load(object sender, EventArgs e)
{
// Write here your SQL query for image URLs..
while(reader.Read())
{
literalControl.Text +=
"<img src=\"../images/sc/" + reader[0].ToString() + ".jpg\" /><br/>";
}
}