如何在代码中使用asp:image

时间:2014-06-15 08:49:58

标签: c# html asp.net image code-behind

我在后面的代码中渲染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更改!

3 个答案:

答案 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/>";
        }
}